MediaWiki master
AuthManager.php
Go to the documentation of this file.
1<?php
24namespace MediaWiki\Auth;
25
27use InvalidArgumentException;
28use Language;
56use Psr\Log\LoggerAwareInterface;
57use Psr\Log\LoggerInterface;
58use Psr\Log\NullLogger;
59use StatusValue;
60use Wikimedia\ObjectFactory\ObjectFactory;
63use Wikimedia\ScopedCallback;
64
113class AuthManager implements LoggerAwareInterface {
118 public const AUTHN_STATE = 'AuthManager::authnState';
119
124 public const ACCOUNT_CREATION_STATE = 'AuthManager::accountCreationState';
125
130 public const ACCOUNT_LINK_STATE = 'AuthManager::accountLinkState';
131
137 public const AUTOCREATE_BLOCKLIST = 'AuthManager::AutoCreateBlacklist';
138
140 public const ACTION_LOGIN = 'login';
144 public const ACTION_LOGIN_CONTINUE = 'login-continue';
146 public const ACTION_CREATE = 'create';
150 public const ACTION_CREATE_CONTINUE = 'create-continue';
152 public const ACTION_LINK = 'link';
156 public const ACTION_LINK_CONTINUE = 'link-continue';
158 public const ACTION_CHANGE = 'change';
160 public const ACTION_REMOVE = 'remove';
162 public const ACTION_UNLINK = 'unlink';
163
165 public const SEC_OK = 'ok';
167 public const SEC_REAUTH = 'reauth';
169 public const SEC_FAIL = 'fail';
170
172 public const AUTOCREATE_SOURCE_SESSION = \MediaWiki\Session\SessionManager::class;
173
175 public const AUTOCREATE_SOURCE_MAINT = '::Maintenance::';
176
178 public const AUTOCREATE_SOURCE_TEMP = TempUserCreator::class;
179
181 private $request;
182
184 private $config;
185
187 private $objectFactory;
188
190 private $logger;
191
193 private $userNameUtils;
194
196 private $allAuthenticationProviders = [];
197
199 private $preAuthenticationProviders = null;
200
202 private $primaryAuthenticationProviders = null;
203
205 private $secondaryAuthenticationProviders = null;
206
208 private $createdAccountAuthenticationRequests = [];
209
211 private $hookContainer;
212
214 private $hookRunner;
215
217 private $readOnlyMode;
218
220 private $blockManager;
221
223 private $watchlistManager;
224
226 private $loadBalancer;
227
229 private $contentLanguage;
230
232 private $languageConverterFactory;
233
235 private $botPasswordStore;
236
238 private $userFactory;
239
241 private $userIdentityLookup;
242
244 private $userOptionsManager;
245
264 public function __construct(
265 WebRequest $request,
266 Config $config,
267 ObjectFactory $objectFactory,
268 HookContainer $hookContainer,
269 ReadOnlyMode $readOnlyMode,
270 UserNameUtils $userNameUtils,
271 BlockManager $blockManager,
272 WatchlistManager $watchlistManager,
273 ILoadBalancer $loadBalancer,
274 Language $contentLanguage,
275 LanguageConverterFactory $languageConverterFactory,
276 BotPasswordStore $botPasswordStore,
277 UserFactory $userFactory,
278 UserIdentityLookup $userIdentityLookup,
279 UserOptionsManager $userOptionsManager
280 ) {
281 $this->request = $request;
282 $this->config = $config;
283 $this->objectFactory = $objectFactory;
284 $this->hookContainer = $hookContainer;
285 $this->hookRunner = new HookRunner( $hookContainer );
286 $this->setLogger( new NullLogger() );
287 $this->readOnlyMode = $readOnlyMode;
288 $this->userNameUtils = $userNameUtils;
289 $this->blockManager = $blockManager;
290 $this->watchlistManager = $watchlistManager;
291 $this->loadBalancer = $loadBalancer;
292 $this->contentLanguage = $contentLanguage;
293 $this->languageConverterFactory = $languageConverterFactory;
294 $this->botPasswordStore = $botPasswordStore;
295 $this->userFactory = $userFactory;
296 $this->userIdentityLookup = $userIdentityLookup;
297 $this->userOptionsManager = $userOptionsManager;
298 }
299
303 public function setLogger( LoggerInterface $logger ) {
304 $this->logger = $logger;
305 }
306
310 public function getRequest() {
311 return $this->request;
312 }
313
321 public function forcePrimaryAuthenticationProviders( array $providers, $why ) {
322 wfDeprecated( __METHOD__, '1.43' );
323
324 $this->logger->warning( "Overriding AuthManager primary authn because $why" );
325
326 if ( $this->primaryAuthenticationProviders !== null ) {
327 $this->logger->warning(
328 'PrimaryAuthenticationProviders have already been accessed! I hope nothing breaks.'
329 );
330
331 $this->allAuthenticationProviders = array_diff_key(
332 $this->allAuthenticationProviders,
333 $this->primaryAuthenticationProviders
334 );
335 $session = $this->request->getSession();
336 $session->remove( self::AUTHN_STATE );
337 $session->remove( self::ACCOUNT_CREATION_STATE );
338 $session->remove( self::ACCOUNT_LINK_STATE );
339 $this->createdAccountAuthenticationRequests = [];
340 }
341
342 $this->primaryAuthenticationProviders = [];
343 foreach ( $providers as $provider ) {
344 if ( !$provider instanceof AbstractPrimaryAuthenticationProvider ) {
345 throw new \RuntimeException(
346 'Expected instance of MediaWiki\\Auth\\AbstractPrimaryAuthenticationProvider, got ' .
347 get_class( $provider )
348 );
349 }
350 $provider->init( $this->logger, $this, $this->hookContainer, $this->config, $this->userNameUtils );
351 $id = $provider->getUniqueId();
352 if ( isset( $this->allAuthenticationProviders[$id] ) ) {
353 throw new \RuntimeException(
354 "Duplicate specifications for id $id (classes " .
355 get_class( $provider ) . ' and ' .
356 get_class( $this->allAuthenticationProviders[$id] ) . ')'
357 );
358 }
359 $this->allAuthenticationProviders[$id] = $provider;
360 $this->primaryAuthenticationProviders[$id] = $provider;
361 }
362 }
363
364 /***************************************************************************/
365 // region Authentication
376 public function canAuthenticateNow() {
377 return $this->request->getSession()->canSetUser();
378 }
379
398 public function beginAuthentication( array $reqs, $returnToUrl ) {
399 $session = $this->request->getSession();
400 if ( !$session->canSetUser() ) {
401 // Caller should have called canAuthenticateNow()
402 $session->remove( self::AUTHN_STATE );
403 throw new \LogicException( 'Authentication is not possible now' );
404 }
405
406 $guessUserName = null;
407 foreach ( $reqs as $req ) {
408 $req->returnToUrl = $returnToUrl;
409 // @codeCoverageIgnoreStart
410 if ( $req->username !== null && $req->username !== '' ) {
411 if ( $guessUserName === null ) {
412 $guessUserName = $req->username;
413 } elseif ( $guessUserName !== $req->username ) {
414 $guessUserName = null;
415 break;
416 }
417 }
418 // @codeCoverageIgnoreEnd
419 }
420
421 // Check for special-case login of a just-created account
423 $reqs, CreatedAccountAuthenticationRequest::class
424 );
425 if ( $req ) {
426 if ( !in_array( $req, $this->createdAccountAuthenticationRequests, true ) ) {
427 throw new \LogicException(
428 'CreatedAccountAuthenticationRequests are only valid on ' .
429 'the same AuthManager that created the account'
430 );
431 }
432
433 $user = $this->userFactory->newFromName( (string)$req->username );
434 // @codeCoverageIgnoreStart
435 if ( !$user ) {
436 throw new \UnexpectedValueException(
437 "CreatedAccountAuthenticationRequest had invalid username \"{$req->username}\""
438 );
439 } elseif ( $user->getId() != $req->id ) {
440 throw new \UnexpectedValueException(
441 "ID for \"{$req->username}\" was {$user->getId()}, expected {$req->id}"
442 );
443 }
444 // @codeCoverageIgnoreEnd
445
446 $this->logger->info( 'Logging in {user} after account creation', [
447 'user' => $user->getName(),
448 ] );
449 $ret = AuthenticationResponse::newPass( $user->getName() );
450 $performer = $session->getUser();
451 $this->setSessionDataForUser( $user );
452 $this->callMethodOnProviders( 7, 'postAuthentication', [ $user, $ret ] );
453 $session->remove( self::AUTHN_STATE );
454 $this->getHookRunner()->onAuthManagerLoginAuthenticateAudit(
455 $ret, $user, $user->getName(), [
456 'performer' => $performer
457 ] );
458 return $ret;
459 }
460
461 $this->removeAuthenticationSessionData( null );
462
463 foreach ( $this->getPreAuthenticationProviders() as $provider ) {
464 $status = $provider->testForAuthentication( $reqs );
465 if ( !$status->isGood() ) {
466 $this->logger->debug( 'Login failed in pre-authentication by ' . $provider->getUniqueId() );
468 Status::wrap( $status )->getMessage()
469 );
470 $this->callMethodOnProviders( 7, 'postAuthentication',
471 [ $this->userFactory->newFromName( (string)$guessUserName ), $ret ]
472 );
473 $this->getHookRunner()->onAuthManagerLoginAuthenticateAudit( $ret, null, $guessUserName, [
474 'performer' => $session->getUser()
475 ] );
476 return $ret;
477 }
478 }
479
480 $state = [
481 'reqs' => $reqs,
482 'returnToUrl' => $returnToUrl,
483 'guessUserName' => $guessUserName,
484 'primary' => null,
485 'primaryResponse' => null,
486 'secondary' => [],
487 'maybeLink' => [],
488 'continueRequests' => [],
489 ];
490
491 // Preserve state from a previous failed login
493 $reqs, CreateFromLoginAuthenticationRequest::class
494 );
495 if ( $req ) {
496 $state['maybeLink'] = $req->maybeLink;
497 }
498
499 $session = $this->request->getSession();
500 $session->setSecret( self::AUTHN_STATE, $state );
501 $session->persist();
502
503 return $this->continueAuthentication( $reqs );
504 }
505
528 public function continueAuthentication( array $reqs ) {
529 $session = $this->request->getSession();
530 try {
531 if ( !$session->canSetUser() ) {
532 // Caller should have called canAuthenticateNow()
533 // @codeCoverageIgnoreStart
534 throw new \LogicException( 'Authentication is not possible now' );
535 // @codeCoverageIgnoreEnd
536 }
537
538 $state = $session->getSecret( self::AUTHN_STATE );
539 if ( !is_array( $state ) ) {
541 wfMessage( 'authmanager-authn-not-in-progress' )
542 );
543 }
544 $state['continueRequests'] = [];
545
546 $guessUserName = $state['guessUserName'];
547
548 foreach ( $reqs as $req ) {
549 $req->returnToUrl = $state['returnToUrl'];
550 }
551
552 // Step 1: Choose a primary authentication provider, and call it until it succeeds.
553
554 if ( $state['primary'] === null ) {
555 // We haven't picked a PrimaryAuthenticationProvider yet
556 // @codeCoverageIgnoreStart
557 $guessUserName = null;
558 foreach ( $reqs as $req ) {
559 if ( $req->username !== null && $req->username !== '' ) {
560 if ( $guessUserName === null ) {
561 $guessUserName = $req->username;
562 } elseif ( $guessUserName !== $req->username ) {
563 $guessUserName = null;
564 break;
565 }
566 }
567 }
568 $state['guessUserName'] = $guessUserName;
569 // @codeCoverageIgnoreEnd
570 $state['reqs'] = $reqs;
571
572 foreach ( $this->getPrimaryAuthenticationProviders() as $id => $provider ) {
573 $res = $provider->beginPrimaryAuthentication( $reqs );
574 switch ( $res->status ) {
576 $state['primary'] = $id;
577 $state['primaryResponse'] = $res;
578 $this->logger->debug( "Primary login with $id succeeded" );
579 break 2;
581 $this->logger->debug( "Login failed in primary authentication by $id" );
582 if ( $res->createRequest || $state['maybeLink'] ) {
583 $res->createRequest = new CreateFromLoginAuthenticationRequest(
584 $res->createRequest, $state['maybeLink']
585 );
586 }
587 $this->callMethodOnProviders(
588 7,
589 'postAuthentication',
590 [
591 $this->userFactory->newFromName( (string)$guessUserName ),
592 $res
593 ]
594 );
595 $session->remove( self::AUTHN_STATE );
596 $this->getHookRunner()->onAuthManagerLoginAuthenticateAudit(
597 $res, null, $guessUserName, [
598 'performer' => $session->getUser()
599 ] );
600 return $res;
602 // Continue loop
603 break;
606 $this->logger->debug( "Primary login with $id returned $res->status" );
607 $this->fillRequests( $res->neededRequests, self::ACTION_LOGIN, $guessUserName );
608 $state['primary'] = $id;
609 $state['continueRequests'] = $res->neededRequests;
610 $session->setSecret( self::AUTHN_STATE, $state );
611 return $res;
612
613 // @codeCoverageIgnoreStart
614 default:
615 throw new \DomainException(
616 get_class( $provider ) . "::beginPrimaryAuthentication() returned $res->status"
617 );
618 // @codeCoverageIgnoreEnd
619 }
620 }
621 // @phan-suppress-next-line PhanTypePossiblyInvalidDimOffset Always set in loop before, if passed
622 if ( $state['primary'] === null ) {
623 $this->logger->debug( 'Login failed in primary authentication because no provider accepted' );
625 wfMessage( 'authmanager-authn-no-primary' )
626 );
627 $this->callMethodOnProviders( 7, 'postAuthentication',
628 [ $this->userFactory->newFromName( (string)$guessUserName ), $ret ]
629 );
630 $session->remove( self::AUTHN_STATE );
631 return $ret;
632 }
633 } elseif ( $state['primaryResponse'] === null ) {
634 $provider = $this->getAuthenticationProvider( $state['primary'] );
635 if ( !$provider instanceof PrimaryAuthenticationProvider ) {
636 // Configuration changed? Force them to start over.
637 // @codeCoverageIgnoreStart
639 wfMessage( 'authmanager-authn-not-in-progress' )
640 );
641 $this->callMethodOnProviders( 7, 'postAuthentication',
642 [ $this->userFactory->newFromName( (string)$guessUserName ), $ret ]
643 );
644 $session->remove( self::AUTHN_STATE );
645 return $ret;
646 // @codeCoverageIgnoreEnd
647 }
648 $id = $provider->getUniqueId();
649 $res = $provider->continuePrimaryAuthentication( $reqs );
650 switch ( $res->status ) {
652 $state['primaryResponse'] = $res;
653 $this->logger->debug( "Primary login with $id succeeded" );
654 break;
656 $this->logger->debug( "Login failed in primary authentication by $id" );
657 if ( $res->createRequest || $state['maybeLink'] ) {
658 $res->createRequest = new CreateFromLoginAuthenticationRequest(
659 $res->createRequest, $state['maybeLink']
660 );
661 }
662 $this->callMethodOnProviders( 7, 'postAuthentication',
663 [ $this->userFactory->newFromName( (string)$guessUserName ), $res ]
664 );
665 $session->remove( self::AUTHN_STATE );
666 $this->getHookRunner()->onAuthManagerLoginAuthenticateAudit(
667 $res, null, $guessUserName, [
668 'performer' => $session->getUser()
669 ] );
670 return $res;
673 $this->logger->debug( "Primary login with $id returned $res->status" );
674 $this->fillRequests( $res->neededRequests, self::ACTION_LOGIN, $guessUserName );
675 $state['continueRequests'] = $res->neededRequests;
676 $session->setSecret( self::AUTHN_STATE, $state );
677 return $res;
678 default:
679 throw new \DomainException(
680 get_class( $provider ) . "::continuePrimaryAuthentication() returned $res->status"
681 );
682 }
683 }
684
685 // @phan-suppress-next-line PhanTypePossiblyInvalidDimOffset Always set in loop before, if passed
686 $res = $state['primaryResponse'];
687 if ( $res->username === null ) {
688 $provider = $this->getAuthenticationProvider( $state['primary'] );
689 if ( !$provider instanceof PrimaryAuthenticationProvider ) {
690 // Configuration changed? Force them to start over.
691 // @codeCoverageIgnoreStart
693 wfMessage( 'authmanager-authn-not-in-progress' )
694 );
695 $this->callMethodOnProviders( 7, 'postAuthentication',
696 [ $this->userFactory->newFromName( (string)$guessUserName ), $ret ]
697 );
698 $session->remove( self::AUTHN_STATE );
699 return $ret;
700 // @codeCoverageIgnoreEnd
701 }
702
703 if ( $provider->accountCreationType() === PrimaryAuthenticationProvider::TYPE_LINK &&
704 $res->linkRequest &&
705 // don't confuse the user with an incorrect message if linking is disabled
706 $this->getAuthenticationProvider( ConfirmLinkSecondaryAuthenticationProvider::class )
707 ) {
708 $state['maybeLink'][$res->linkRequest->getUniqueId()] = $res->linkRequest;
709 $msg = 'authmanager-authn-no-local-user-link';
710 } else {
711 $msg = 'authmanager-authn-no-local-user';
712 }
713 $this->logger->debug(
714 "Primary login with {$provider->getUniqueId()} succeeded, but returned no user"
715 );
717 $ret->neededRequests = $this->getAuthenticationRequestsInternal(
718 self::ACTION_LOGIN,
719 [],
721 );
722 if ( $res->createRequest || $state['maybeLink'] ) {
723 $ret->createRequest = new CreateFromLoginAuthenticationRequest(
724 $res->createRequest, $state['maybeLink']
725 );
726 $ret->neededRequests[] = $ret->createRequest;
727 }
728 $this->fillRequests( $ret->neededRequests, self::ACTION_LOGIN, null, true );
729 $session->setSecret( self::AUTHN_STATE, [
730 'reqs' => [], // Will be filled in later
731 'primary' => null,
732 'primaryResponse' => null,
733 'secondary' => [],
734 'continueRequests' => $ret->neededRequests,
735 ] + $state );
736 return $ret;
737 }
738
739 // Step 2: Primary authentication succeeded, create the User object
740 // (and add the user locally if necessary)
741
742 $user = $this->userFactory->newFromName(
743 (string)$res->username,
744 UserRigorOptions::RIGOR_USABLE
745 );
746 if ( !$user ) {
747 $provider = $this->getAuthenticationProvider( $state['primary'] );
748 throw new \DomainException(
749 get_class( $provider ) . " returned an invalid username: {$res->username}"
750 );
751 }
752 if ( !$user->isRegistered() ) {
753 // User doesn't exist locally. Create it.
754 $this->logger->info( 'Auto-creating {user} on login', [
755 'user' => $user->getName(),
756 ] );
757 // Also use $user as performer, because the performer will be used for permission
758 // checks and global rights extensions might add rights based on the username,
759 // even if the user doesn't exist at this point.
760 $status = $this->autoCreateUser( $user, $state['primary'], false, true, $user );
761 if ( !$status->isGood() ) {
763 Status::wrap( $status )->getMessage( 'authmanager-authn-autocreate-failed' )
764 );
765 $this->callMethodOnProviders( 7, 'postAuthentication', [ $user, $ret ] );
766 $session->remove( self::AUTHN_STATE );
767 $this->getHookRunner()->onAuthManagerLoginAuthenticateAudit(
768 $ret, $user, $user->getName(), [
769 'performer' => $session->getUser()
770 ] );
771 return $ret;
772 }
773 }
774
775 // Step 3: Iterate over all the secondary authentication providers.
776
777 $beginReqs = $state['reqs'];
778
779 foreach ( $this->getSecondaryAuthenticationProviders() as $id => $provider ) {
780 if ( !isset( $state['secondary'][$id] ) ) {
781 // This provider isn't started yet, so we pass it the set
782 // of reqs from beginAuthentication instead of whatever
783 // might have been used by a previous provider in line.
784 $func = 'beginSecondaryAuthentication';
785 $res = $provider->beginSecondaryAuthentication( $user, $beginReqs );
786 } elseif ( !$state['secondary'][$id] ) {
787 $func = 'continueSecondaryAuthentication';
788 $res = $provider->continueSecondaryAuthentication( $user, $reqs );
789 } else {
790 continue;
791 }
792 switch ( $res->status ) {
794 $this->logger->debug( "Secondary login with $id succeeded" );
795 // fall through
797 $state['secondary'][$id] = true;
798 break;
800 $this->logger->debug( "Login failed in secondary authentication by $id" );
801 $this->callMethodOnProviders( 7, 'postAuthentication', [ $user, $res ] );
802 $session->remove( self::AUTHN_STATE );
803 $this->getHookRunner()->onAuthManagerLoginAuthenticateAudit(
804 $res, $user, $user->getName(), [
805 'performer' => $session->getUser()
806 ] );
807 return $res;
810 $this->logger->debug( "Secondary login with $id returned " . $res->status );
811 $this->fillRequests( $res->neededRequests, self::ACTION_LOGIN, $user->getName() );
812 $state['secondary'][$id] = false;
813 $state['continueRequests'] = $res->neededRequests;
814 $session->setSecret( self::AUTHN_STATE, $state );
815 return $res;
816
817 // @codeCoverageIgnoreStart
818 default:
819 throw new \DomainException(
820 get_class( $provider ) . "::{$func}() returned $res->status"
821 );
822 // @codeCoverageIgnoreEnd
823 }
824 }
825
826 // Step 4: Authentication complete! Set the user in the session and
827 // clean up.
828
829 $this->logger->info( 'Login for {user} succeeded from {clientip}', [
830 'user' => $user->getName(),
831 'clientip' => $this->request->getIP(),
832 ] );
833 $rememberMeConfig = $this->config->get( MainConfigNames::RememberMe );
834 if ( $rememberMeConfig === RememberMeAuthenticationRequest::ALWAYS_REMEMBER ) {
835 $rememberMe = true;
836 } elseif ( $rememberMeConfig === RememberMeAuthenticationRequest::NEVER_REMEMBER ) {
837 $rememberMe = false;
838 } else {
841 $beginReqs, RememberMeAuthenticationRequest::class
842 );
843 $rememberMe = $req && $req->rememberMe;
844 }
845 $this->setSessionDataForUser( $user, $rememberMe );
846 $ret = AuthenticationResponse::newPass( $user->getName() );
847 $this->callMethodOnProviders( 7, 'postAuthentication', [ $user, $ret ] );
848 $performer = $session->getUser();
849 $session->remove( self::AUTHN_STATE );
850 $this->removeAuthenticationSessionData( null );
851 $this->getHookRunner()->onAuthManagerLoginAuthenticateAudit(
852 $ret, $user, $user->getName(), [
853 'performer' => $performer
854 ] );
855 return $ret;
856 } catch ( \Exception $ex ) {
857 $session->remove( self::AUTHN_STATE );
858 throw $ex;
859 }
860 }
861
873 public function securitySensitiveOperationStatus( $operation ) {
874 $status = self::SEC_OK;
875
876 $this->logger->debug( __METHOD__ . ": Checking $operation" );
877
878 $session = $this->request->getSession();
879 $aId = $session->getUser()->getId();
880 if ( $aId === 0 ) {
881 // User isn't authenticated. DWIM?
883 $this->logger->info( __METHOD__ . ": Not logged in! $operation is $status" );
884 return $status;
885 }
886
887 if ( $session->canSetUser() ) {
888 $id = $session->get( 'AuthManager:lastAuthId' );
889 $last = $session->get( 'AuthManager:lastAuthTimestamp' );
890 if ( $id !== $aId || $last === null ) {
891 $timeSinceLogin = PHP_INT_MAX; // Forever ago
892 } else {
893 $timeSinceLogin = max( 0, time() - $last );
894 }
895
896 $thresholds = $this->config->get( MainConfigNames::ReauthenticateTime );
897 if ( isset( $thresholds[$operation] ) ) {
898 $threshold = $thresholds[$operation];
899 } elseif ( isset( $thresholds['default'] ) ) {
900 $threshold = $thresholds['default'];
901 } else {
902 throw new \UnexpectedValueException( '$wgReauthenticateTime lacks a default' );
903 }
904
905 if ( $threshold >= 0 && $timeSinceLogin > $threshold ) {
906 $status = self::SEC_REAUTH;
907 }
908 } else {
909 $timeSinceLogin = -1;
910
911 $pass = $this->config->get(
913 if ( isset( $pass[$operation] ) ) {
914 $status = $pass[$operation] ? self::SEC_OK : self::SEC_FAIL;
915 } elseif ( isset( $pass['default'] ) ) {
916 $status = $pass['default'] ? self::SEC_OK : self::SEC_FAIL;
917 } else {
918 throw new \UnexpectedValueException(
919 '$wgAllowSecuritySensitiveOperationIfCannotReauthenticate lacks a default'
920 );
921 }
922 }
923
924 $this->getHookRunner()->onSecuritySensitiveOperationStatus(
925 $status, $operation, $session, $timeSinceLogin );
926
927 // If authentication is not possible, downgrade from "REAUTH" to "FAIL".
928 if ( !$this->canAuthenticateNow() && $status === self::SEC_REAUTH ) {
929 $status = self::SEC_FAIL;
930 }
931
932 $this->logger->info( __METHOD__ . ": $operation is $status for '{user}'",
933 [
934 'user' => $session->getUser()->getName(),
935 'clientip' => $this->getRequest()->getIP(),
936 ]
937 );
938
939 return $status;
940 }
941
951 public function userCanAuthenticate( $username ) {
952 foreach ( $this->getPrimaryAuthenticationProviders() as $provider ) {
953 if ( $provider->testUserCanAuthenticate( $username ) ) {
954 return true;
955 }
956 }
957 return false;
958 }
959
974 public function normalizeUsername( $username ) {
975 $ret = [];
976 foreach ( $this->getPrimaryAuthenticationProviders() as $provider ) {
977 $normalized = $provider->providerNormalizeUsername( $username );
978 if ( $normalized !== null ) {
979 $ret[$normalized] = true;
980 }
981 }
982 return array_keys( $ret );
983 }
984
1002 $context = RequestContext::getMain();
1003 $user = $context->getRequest()->getSession()->getUser();
1004
1005 StubGlobalUser::setUser( $user );
1006 $context->setUser( $user );
1007
1008 // phpcs:ignore MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage
1009 global $wgLang;
1010 // phpcs:ignore MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage
1011 $wgLang = $context->getLanguage();
1012 }
1013
1014 // endregion -- end of Authentication
1015
1016 /***************************************************************************/
1017 // region Authentication data changing
1027 public function revokeAccessForUser( $username ) {
1028 $this->logger->info( 'Revoking access for {user}', [
1029 'user' => $username,
1030 ] );
1031 $this->callMethodOnProviders( 6, 'providerRevokeAccessForUser', [ $username ] );
1032 }
1033
1043 public function allowsAuthenticationDataChange( AuthenticationRequest $req, $checkData = true ) {
1044 $any = false;
1045 $providers = $this->getPrimaryAuthenticationProviders() +
1046 $this->getSecondaryAuthenticationProviders();
1047
1048 foreach ( $providers as $provider ) {
1049 $status = $provider->providerAllowsAuthenticationDataChange( $req, $checkData );
1050 if ( !$status->isGood() ) {
1051 // If status is not good because reset email password last attempt was within
1052 // $wgPasswordReminderResendTime then return good status with throttled-mailpassword value;
1053 // otherwise, return the $status wrapped.
1054 return $status->hasMessage( 'throttled-mailpassword' )
1055 ? Status::newGood( 'throttled-mailpassword' )
1056 : Status::wrap( $status );
1057 }
1058 $any = $any || $status->value !== 'ignored';
1059 }
1060 if ( !$any ) {
1061 return Status::newGood( 'ignored' )
1062 ->warning( 'authmanager-change-not-supported' );
1063 }
1064 return Status::newGood();
1065 }
1066
1084 public function changeAuthenticationData( AuthenticationRequest $req, $isAddition = false ) {
1085 $this->logger->info( 'Changing authentication data for {user} class {what}', [
1086 'user' => is_string( $req->username ) ? $req->username : '<no name>',
1087 'what' => get_class( $req ),
1088 ] );
1089
1090 $this->callMethodOnProviders( 6, 'providerChangeAuthenticationData', [ $req ] );
1091
1092 // When the main account's authentication data is changed, invalidate
1093 // all BotPasswords too.
1094 if ( !$isAddition ) {
1095 $this->botPasswordStore->invalidateUserPasswords( (string)$req->username );
1096 }
1097 }
1098
1099 // endregion -- end of Authentication data changing
1100
1101 /***************************************************************************/
1102 // region Account creation
1109 public function canCreateAccounts() {
1110 foreach ( $this->getPrimaryAuthenticationProviders() as $provider ) {
1111 switch ( $provider->accountCreationType() ) {
1114 return true;
1115 }
1116 }
1117 return false;
1118 }
1119
1128 public function canCreateAccount( $username, $options = [] ) {
1129 // Back compat
1130 if ( is_int( $options ) ) {
1131 $options = [ 'flags' => $options ];
1132 }
1133 $options += [
1134 'flags' => IDBAccessObject::READ_NORMAL,
1135 'creating' => false,
1136 ];
1137 // @phan-suppress-next-line PhanTypePossiblyInvalidDimOffset False positive
1138 $flags = $options['flags'];
1139
1140 if ( !$this->canCreateAccounts() ) {
1141 return Status::newFatal( 'authmanager-create-disabled' );
1142 }
1143
1144 if ( $this->userExists( $username, $flags ) ) {
1145 return Status::newFatal( 'userexists' );
1146 }
1147
1148 $user = $this->userFactory->newFromName( (string)$username, UserRigorOptions::RIGOR_CREATABLE );
1149 if ( !is_object( $user ) ) {
1150 return Status::newFatal( 'noname' );
1151 } else {
1152 $user->load( $flags ); // Explicitly load with $flags, auto-loading always uses READ_NORMAL
1153 if ( $user->isRegistered() ) {
1154 return Status::newFatal( 'userexists' );
1155 }
1156 }
1157
1158 // Denied by providers?
1159 $providers = $this->getPreAuthenticationProviders() +
1160 $this->getPrimaryAuthenticationProviders() +
1161 $this->getSecondaryAuthenticationProviders();
1162 foreach ( $providers as $provider ) {
1163 $status = $provider->testUserForCreation( $user, false, $options );
1164 if ( !$status->isGood() ) {
1165 return Status::wrap( $status );
1166 }
1167 }
1168
1169 return Status::newGood();
1170 }
1171
1177 private function authorizeInternal(
1178 callable $authorizer,
1179 string $action
1180 ): StatusValue {
1181 // Wiki is read-only?
1182 if ( $this->readOnlyMode->isReadOnly() ) {
1183 return StatusValue::newFatal( wfMessage( 'readonlytext', $this->readOnlyMode->getReason() ) );
1184 }
1185
1186 $permStatus = new PermissionStatus();
1187 if ( !$authorizer(
1188 $action,
1189 SpecialPage::getTitleFor( 'CreateAccount' ),
1190 $permStatus
1191 ) ) {
1192 return $permStatus;
1193 }
1194
1195 $ip = $this->getRequest()->getIP();
1196 if ( $this->blockManager->isDnsBlacklisted( $ip, true /* check $wgProxyWhitelist */ ) ) {
1197 return StatusValue::newFatal( 'sorbs_create_account_reason' );
1198 }
1199
1200 return StatusValue::newGood();
1201 }
1202
1214 public function probablyCanCreateAccount( Authority $creator ): StatusValue {
1215 return $this->authorizeInternal(
1216 static function (
1217 string $action,
1218 PageIdentity $target,
1219 PermissionStatus $status
1220 ) use ( $creator ) {
1221 return $creator->probablyCan( $action, $target, $status );
1222 },
1223 'createaccount'
1224 );
1225 }
1226
1238 public function authorizeCreateAccount( Authority $creator ): StatusValue {
1239 return $this->authorizeInternal(
1240 static function (
1241 string $action,
1242 PageIdentity $target,
1243 PermissionStatus $status
1244 ) use ( $creator ) {
1245 return $creator->authorizeWrite( $action, $target, $status );
1246 },
1247 'createaccount'
1248 );
1249 }
1250
1270 public function beginAccountCreation( Authority $creator, array $reqs, $returnToUrl ) {
1271 $session = $this->request->getSession();
1272 if ( !$this->canCreateAccounts() ) {
1273 // Caller should have called canCreateAccounts()
1274 $session->remove( self::ACCOUNT_CREATION_STATE );
1275 throw new \LogicException( 'Account creation is not possible' );
1276 }
1277
1278 try {
1279 $username = AuthenticationRequest::getUsernameFromRequests( $reqs );
1280 } catch ( \UnexpectedValueException $ex ) {
1281 $username = null;
1282 }
1283 if ( $username === null ) {
1284 $this->logger->debug( __METHOD__ . ': No username provided' );
1285 return AuthenticationResponse::newFail( wfMessage( 'noname' ) );
1286 }
1287
1288 // Permissions check
1289 $status = Status::wrap( $this->authorizeCreateAccount( $creator ) );
1290 if ( !$status->isGood() ) {
1291 $this->logger->debug( __METHOD__ . ': {creator} cannot create users: {reason}', [
1292 'user' => $username,
1293 'creator' => $creator->getUser()->getName(),
1294 'reason' => $status->getWikiText( false, false, 'en' )
1295 ] );
1296 return AuthenticationResponse::newFail( $status->getMessage() );
1297 }
1298
1299 $status = $this->canCreateAccount(
1300 $username, [ 'flags' => IDBAccessObject::READ_LOCKING, 'creating' => true ]
1301 );
1302 if ( !$status->isGood() ) {
1303 $this->logger->debug( __METHOD__ . ': {user} cannot be created: {reason}', [
1304 'user' => $username,
1305 'creator' => $creator->getUser()->getName(),
1306 'reason' => $status->getWikiText( false, false, 'en' )
1307 ] );
1308 return AuthenticationResponse::newFail( $status->getMessage() );
1309 }
1310
1311 $user = $this->userFactory->newFromName( (string)$username, UserRigorOptions::RIGOR_CREATABLE );
1312 foreach ( $reqs as $req ) {
1313 $req->username = $username;
1314 $req->returnToUrl = $returnToUrl;
1315 if ( $req instanceof UserDataAuthenticationRequest ) {
1316 // @phan-suppress-next-line PhanTypeMismatchArgumentNullable user should be checked and valid here
1317 $status = $req->populateUser( $user );
1318 if ( !$status->isGood() ) {
1319 $status = Status::wrap( $status );
1320 $session->remove( self::ACCOUNT_CREATION_STATE );
1321 $this->logger->debug( __METHOD__ . ': UserData is invalid: {reason}', [
1322 'user' => $user->getName(),
1323 'creator' => $creator->getUser()->getName(),
1324 'reason' => $status->getWikiText( false, false, 'en' ),
1325 ] );
1326 return AuthenticationResponse::newFail( $status->getMessage() );
1327 }
1328 }
1329 }
1330
1331 $this->removeAuthenticationSessionData( null );
1332
1333 $state = [
1334 'username' => $username,
1335 'userid' => 0,
1336 'creatorid' => $creator->getUser()->getId(),
1337 'creatorname' => $creator->getUser()->getName(),
1338 'reqs' => $reqs,
1339 'returnToUrl' => $returnToUrl,
1340 'primary' => null,
1341 'primaryResponse' => null,
1342 'secondary' => [],
1343 'continueRequests' => [],
1344 'maybeLink' => [],
1345 'ranPreTests' => false,
1346 ];
1347
1348 // Special case: converting a login to an account creation
1349 $req = AuthenticationRequest::getRequestByClass(
1350 $reqs, CreateFromLoginAuthenticationRequest::class
1351 );
1352 if ( $req ) {
1353 $state['maybeLink'] = $req->maybeLink;
1354
1355 if ( $req->createRequest ) {
1356 $reqs[] = $req->createRequest;
1357 $state['reqs'][] = $req->createRequest;
1358 }
1359 }
1360
1361 $session->setSecret( self::ACCOUNT_CREATION_STATE, $state );
1362 $session->persist();
1363
1364 return $this->continueAccountCreation( $reqs );
1365 }
1366
1372 public function continueAccountCreation( array $reqs ) {
1373 $session = $this->request->getSession();
1374 try {
1375 if ( !$this->canCreateAccounts() ) {
1376 // Caller should have called canCreateAccounts()
1377 $session->remove( self::ACCOUNT_CREATION_STATE );
1378 throw new \LogicException( 'Account creation is not possible' );
1379 }
1380
1381 $state = $session->getSecret( self::ACCOUNT_CREATION_STATE );
1382 if ( !is_array( $state ) ) {
1383 return AuthenticationResponse::newFail(
1384 wfMessage( 'authmanager-create-not-in-progress' )
1385 );
1386 }
1387 $state['continueRequests'] = [];
1388
1389 // Step 0: Prepare and validate the input
1390
1391 $user = $this->userFactory->newFromName(
1392 (string)$state['username'],
1393 UserRigorOptions::RIGOR_CREATABLE
1394 );
1395 if ( !is_object( $user ) ) {
1396 $session->remove( self::ACCOUNT_CREATION_STATE );
1397 $this->logger->debug( __METHOD__ . ': Invalid username', [
1398 'user' => $state['username'],
1399 ] );
1400 return AuthenticationResponse::newFail( wfMessage( 'noname' ) );
1401 }
1402
1403 if ( $state['creatorid'] ) {
1404 $creator = $this->userFactory->newFromId( (int)$state['creatorid'] );
1405 } else {
1406 $creator = $this->userFactory->newAnonymous();
1407 $creator->setName( $state['creatorname'] );
1408 }
1409
1410 // Avoid account creation races on double submissions
1411 $cache = MediaWikiServices::getInstance()->getObjectCacheFactory()->getLocalClusterInstance();
1412 $lock = $cache->getScopedLock( $cache->makeGlobalKey( 'account', md5( $user->getName() ) ) );
1413 if ( !$lock ) {
1414 // Don't clear AuthManager::accountCreationState for this code
1415 // path because the process that won the race owns it.
1416 $this->logger->debug( __METHOD__ . ': Could not acquire account creation lock', [
1417 'user' => $user->getName(),
1418 'creator' => $creator->getName(),
1419 ] );
1420 return AuthenticationResponse::newFail( wfMessage( 'usernameinprogress' ) );
1421 }
1422
1423 // Permissions check
1424 $status = Status::wrap( $this->authorizeCreateAccount( $creator ) );
1425 if ( !$status->isGood() ) {
1426 $this->logger->debug( __METHOD__ . ': {creator} cannot create users: {reason}', [
1427 'user' => $user->getName(),
1428 'creator' => $creator->getName(),
1429 'reason' => $status->getWikiText( false, false, 'en' )
1430 ] );
1431 $ret = AuthenticationResponse::newFail( $status->getMessage() );
1432 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $ret ] );
1433 $session->remove( self::ACCOUNT_CREATION_STATE );
1434 return $ret;
1435 }
1436
1437 // Load from primary DB for existence check
1438 $user->load( IDBAccessObject::READ_LOCKING );
1439
1440 if ( $state['userid'] === 0 ) {
1441 if ( $user->isRegistered() ) {
1442 $this->logger->debug( __METHOD__ . ': User exists locally', [
1443 'user' => $user->getName(),
1444 'creator' => $creator->getName(),
1445 ] );
1446 $ret = AuthenticationResponse::newFail( wfMessage( 'userexists' ) );
1447 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $ret ] );
1448 $session->remove( self::ACCOUNT_CREATION_STATE );
1449 return $ret;
1450 }
1451 } else {
1452 if ( !$user->isRegistered() ) {
1453 $this->logger->debug( __METHOD__ . ': User does not exist locally when it should', [
1454 'user' => $user->getName(),
1455 'creator' => $creator->getName(),
1456 'expected_id' => $state['userid'],
1457 ] );
1458 throw new \UnexpectedValueException(
1459 "User \"{$state['username']}\" should exist now, but doesn't!"
1460 );
1461 }
1462 if ( $user->getId() !== $state['userid'] ) {
1463 $this->logger->debug( __METHOD__ . ': User ID/name mismatch', [
1464 'user' => $user->getName(),
1465 'creator' => $creator->getName(),
1466 'expected_id' => $state['userid'],
1467 'actual_id' => $user->getId(),
1468 ] );
1469 throw new \UnexpectedValueException(
1470 "User \"{$state['username']}\" exists, but " .
1471 "ID {$user->getId()} !== {$state['userid']}!"
1472 );
1473 }
1474 }
1475 foreach ( $state['reqs'] as $req ) {
1476 if ( $req instanceof UserDataAuthenticationRequest ) {
1477 $status = $req->populateUser( $user );
1478 if ( !$status->isGood() ) {
1479 // This should never happen...
1480 $status = Status::wrap( $status );
1481 $this->logger->debug( __METHOD__ . ': UserData is invalid: {reason}', [
1482 'user' => $user->getName(),
1483 'creator' => $creator->getName(),
1484 'reason' => $status->getWikiText( false, false, 'en' ),
1485 ] );
1486 $ret = AuthenticationResponse::newFail( $status->getMessage() );
1487 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $ret ] );
1488 $session->remove( self::ACCOUNT_CREATION_STATE );
1489 return $ret;
1490 }
1491 }
1492 }
1493
1494 foreach ( $reqs as $req ) {
1495 $req->returnToUrl = $state['returnToUrl'];
1496 $req->username = $state['username'];
1497 }
1498
1499 // Run pre-creation tests, if we haven't already
1500 if ( !$state['ranPreTests'] ) {
1501 $providers = $this->getPreAuthenticationProviders() +
1502 $this->getPrimaryAuthenticationProviders() +
1503 $this->getSecondaryAuthenticationProviders();
1504 foreach ( $providers as $id => $provider ) {
1505 $status = $provider->testForAccountCreation( $user, $creator, $reqs );
1506 if ( !$status->isGood() ) {
1507 $this->logger->debug( __METHOD__ . ": Fail in pre-authentication by $id", [
1508 'user' => $user->getName(),
1509 'creator' => $creator->getName(),
1510 ] );
1511 $ret = AuthenticationResponse::newFail(
1512 Status::wrap( $status )->getMessage()
1513 );
1514 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $ret ] );
1515 $session->remove( self::ACCOUNT_CREATION_STATE );
1516 return $ret;
1517 }
1518 }
1519
1520 $state['ranPreTests'] = true;
1521 }
1522
1523 // Step 1: Choose a primary authentication provider and call it until it succeeds.
1524
1525 if ( $state['primary'] === null ) {
1526 // We haven't picked a PrimaryAuthenticationProvider yet
1527 foreach ( $this->getPrimaryAuthenticationProviders() as $id => $provider ) {
1528 if ( $provider->accountCreationType() === PrimaryAuthenticationProvider::TYPE_NONE ) {
1529 continue;
1530 }
1531 $res = $provider->beginPrimaryAccountCreation( $user, $creator, $reqs );
1532 switch ( $res->status ) {
1533 case AuthenticationResponse::PASS:
1534 $this->logger->debug( __METHOD__ . ": Primary creation passed by $id", [
1535 'user' => $user->getName(),
1536 'creator' => $creator->getName(),
1537 ] );
1538 $state['primary'] = $id;
1539 $state['primaryResponse'] = $res;
1540 break 2;
1541 case AuthenticationResponse::FAIL:
1542 $this->logger->debug( __METHOD__ . ": Primary creation failed by $id", [
1543 'user' => $user->getName(),
1544 'creator' => $creator->getName(),
1545 ] );
1546 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $res ] );
1547 $session->remove( self::ACCOUNT_CREATION_STATE );
1548 return $res;
1549 case AuthenticationResponse::ABSTAIN:
1550 // Continue loop
1551 break;
1552 case AuthenticationResponse::REDIRECT:
1553 case AuthenticationResponse::UI:
1554 $this->logger->debug( __METHOD__ . ": Primary creation $res->status by $id", [
1555 'user' => $user->getName(),
1556 'creator' => $creator->getName(),
1557 ] );
1558 $this->fillRequests( $res->neededRequests, self::ACTION_CREATE, null );
1559 $state['primary'] = $id;
1560 $state['continueRequests'] = $res->neededRequests;
1561 $session->setSecret( self::ACCOUNT_CREATION_STATE, $state );
1562 return $res;
1563
1564 // @codeCoverageIgnoreStart
1565 default:
1566 throw new \DomainException(
1567 get_class( $provider ) . "::beginPrimaryAccountCreation() returned $res->status"
1568 );
1569 // @codeCoverageIgnoreEnd
1570 }
1571 }
1572 // @phan-suppress-next-line PhanTypePossiblyInvalidDimOffset Always set in loop before, if passed
1573 if ( $state['primary'] === null ) {
1574 $this->logger->debug( __METHOD__ . ': Primary creation failed because no provider accepted', [
1575 'user' => $user->getName(),
1576 'creator' => $creator->getName(),
1577 ] );
1578 $ret = AuthenticationResponse::newFail(
1579 wfMessage( 'authmanager-create-no-primary' )
1580 );
1581 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $ret ] );
1582 $session->remove( self::ACCOUNT_CREATION_STATE );
1583 return $ret;
1584 }
1585 } elseif ( $state['primaryResponse'] === null ) {
1586 $provider = $this->getAuthenticationProvider( $state['primary'] );
1587 if ( !$provider instanceof PrimaryAuthenticationProvider ) {
1588 // Configuration changed? Force them to start over.
1589 // @codeCoverageIgnoreStart
1590 $ret = AuthenticationResponse::newFail(
1591 wfMessage( 'authmanager-create-not-in-progress' )
1592 );
1593 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $ret ] );
1594 $session->remove( self::ACCOUNT_CREATION_STATE );
1595 return $ret;
1596 // @codeCoverageIgnoreEnd
1597 }
1598 $id = $provider->getUniqueId();
1599 $res = $provider->continuePrimaryAccountCreation( $user, $creator, $reqs );
1600 switch ( $res->status ) {
1601 case AuthenticationResponse::PASS:
1602 $this->logger->debug( __METHOD__ . ": Primary creation passed by $id", [
1603 'user' => $user->getName(),
1604 'creator' => $creator->getName(),
1605 ] );
1606 $state['primaryResponse'] = $res;
1607 break;
1608 case AuthenticationResponse::FAIL:
1609 $this->logger->debug( __METHOD__ . ": Primary creation failed by $id", [
1610 'user' => $user->getName(),
1611 'creator' => $creator->getName(),
1612 ] );
1613 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $res ] );
1614 $session->remove( self::ACCOUNT_CREATION_STATE );
1615 return $res;
1616 case AuthenticationResponse::REDIRECT:
1617 case AuthenticationResponse::UI:
1618 $this->logger->debug( __METHOD__ . ": Primary creation $res->status by $id", [
1619 'user' => $user->getName(),
1620 'creator' => $creator->getName(),
1621 ] );
1622 $this->fillRequests( $res->neededRequests, self::ACTION_CREATE, null );
1623 $state['continueRequests'] = $res->neededRequests;
1624 $session->setSecret( self::ACCOUNT_CREATION_STATE, $state );
1625 return $res;
1626 default:
1627 throw new \DomainException(
1628 get_class( $provider ) . "::continuePrimaryAccountCreation() returned $res->status"
1629 );
1630 }
1631 }
1632
1633 // Step 2: Primary authentication succeeded, create the User object
1634 // and add the user locally.
1635
1636 if ( $state['userid'] === 0 ) {
1637 $this->logger->info( 'Creating user {user} during account creation', [
1638 'user' => $user->getName(),
1639 'creator' => $creator->getName(),
1640 ] );
1641 $status = $user->addToDatabase();
1642 if ( !$status->isOK() ) {
1643 // @codeCoverageIgnoreStart
1644 $ret = AuthenticationResponse::newFail( $status->getMessage() );
1645 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $ret ] );
1646 $session->remove( self::ACCOUNT_CREATION_STATE );
1647 return $ret;
1648 // @codeCoverageIgnoreEnd
1649 }
1650 $this->setDefaultUserOptions( $user, $creator->isAnon() );
1651 $this->getHookRunner()->onLocalUserCreated( $user, false );
1652 $user->saveSettings();
1653 $state['userid'] = $user->getId();
1654
1655 // Update user count
1656 DeferredUpdates::addUpdate( SiteStatsUpdate::factory( [ 'users' => 1 ] ) );
1657
1658 // Watch user's userpage and talk page
1659 $this->watchlistManager->addWatchIgnoringRights( $user, $user->getUserPage() );
1660
1661 // Inform the provider
1662 // @phan-suppress-next-next-line PhanPossiblyUndeclaredVariable
1663 // @phan-suppress-next-line PhanTypePossiblyInvalidDimOffset Always set in loop before, if passed
1664 $logSubtype = $provider->finishAccountCreation( $user, $creator, $state['primaryResponse'] );
1665
1666 // Log the creation
1667 if ( $this->config->get( MainConfigNames::NewUserLog ) ) {
1668 $isNamed = $creator->isNamed();
1669 $logEntry = new \ManualLogEntry(
1670 'newusers',
1671 $logSubtype ?: ( $isNamed ? 'create2' : 'create' )
1672 );
1673 $logEntry->setPerformer( $isNamed ? $creator : $user );
1674 $logEntry->setTarget( $user->getUserPage() );
1676 $req = AuthenticationRequest::getRequestByClass(
1677 $state['reqs'], CreationReasonAuthenticationRequest::class
1678 );
1679 $logEntry->setComment( $req ? $req->reason : '' );
1680 $logEntry->setParameters( [
1681 '4::userid' => $user->getId(),
1682 ] );
1683 $logid = $logEntry->insert();
1684 $logEntry->publish( $logid );
1685 }
1686 }
1687
1688 // Step 3: Iterate over all the secondary authentication providers.
1689
1690 $beginReqs = $state['reqs'];
1691
1692 foreach ( $this->getSecondaryAuthenticationProviders() as $id => $provider ) {
1693 if ( !isset( $state['secondary'][$id] ) ) {
1694 // This provider isn't started yet, so we pass it the set
1695 // of reqs from beginAuthentication instead of whatever
1696 // might have been used by a previous provider in line.
1697 $func = 'beginSecondaryAccountCreation';
1698 $res = $provider->beginSecondaryAccountCreation( $user, $creator, $beginReqs );
1699 } elseif ( !$state['secondary'][$id] ) {
1700 $func = 'continueSecondaryAccountCreation';
1701 $res = $provider->continueSecondaryAccountCreation( $user, $creator, $reqs );
1702 } else {
1703 continue;
1704 }
1705 switch ( $res->status ) {
1706 case AuthenticationResponse::PASS:
1707 $this->logger->debug( __METHOD__ . ": Secondary creation passed by $id", [
1708 'user' => $user->getName(),
1709 'creator' => $creator->getName(),
1710 ] );
1711 // fall through
1712 case AuthenticationResponse::ABSTAIN:
1713 $state['secondary'][$id] = true;
1714 break;
1715 case AuthenticationResponse::REDIRECT:
1716 case AuthenticationResponse::UI:
1717 $this->logger->debug( __METHOD__ . ": Secondary creation $res->status by $id", [
1718 'user' => $user->getName(),
1719 'creator' => $creator->getName(),
1720 ] );
1721 $this->fillRequests( $res->neededRequests, self::ACTION_CREATE, null );
1722 $state['secondary'][$id] = false;
1723 $state['continueRequests'] = $res->neededRequests;
1724 $session->setSecret( self::ACCOUNT_CREATION_STATE, $state );
1725 return $res;
1726 case AuthenticationResponse::FAIL:
1727 throw new \DomainException(
1728 get_class( $provider ) . "::{$func}() returned $res->status." .
1729 ' Secondary providers are not allowed to fail account creation, that' .
1730 ' should have been done via testForAccountCreation().'
1731 );
1732 // @codeCoverageIgnoreStart
1733 default:
1734 throw new \DomainException(
1735 get_class( $provider ) . "::{$func}() returned $res->status"
1736 );
1737 // @codeCoverageIgnoreEnd
1738 }
1739 }
1740
1741 $id = $user->getId();
1742 $name = $user->getName();
1743 $req = new CreatedAccountAuthenticationRequest( $id, $name );
1744 $ret = AuthenticationResponse::newPass( $name );
1745 $ret->loginRequest = $req;
1746 $this->createdAccountAuthenticationRequests[] = $req;
1747
1748 $this->logger->info( __METHOD__ . ': Account creation succeeded for {user}', [
1749 'user' => $user->getName(),
1750 'creator' => $creator->getName(),
1751 ] );
1752
1753 $this->callMethodOnProviders( 7, 'postAccountCreation', [ $user, $creator, $ret ] );
1754 $session->remove( self::ACCOUNT_CREATION_STATE );
1755 $this->removeAuthenticationSessionData( null );
1756 return $ret;
1757 } catch ( \Exception $ex ) {
1758 $session->remove( self::ACCOUNT_CREATION_STATE );
1759 throw $ex;
1760 }
1761 }
1762
1784 public function autoCreateUser(
1785 User $user,
1786 $source,
1787 $login = true,
1788 $log = true,
1789 ?Authority $performer = null
1790 ) {
1791 $validSources = [
1792 self::AUTOCREATE_SOURCE_SESSION,
1793 self::AUTOCREATE_SOURCE_MAINT,
1794 self::AUTOCREATE_SOURCE_TEMP
1795 ];
1796 if ( !in_array( $source, $validSources, true )
1797 && !$this->getAuthenticationProvider( $source ) instanceof PrimaryAuthenticationProvider
1798 ) {
1799 throw new InvalidArgumentException( "Unknown auto-creation source: $source" );
1800 }
1801
1802 $username = $user->getName();
1803
1804 // Try the local user from the replica DB
1805 $localUserIdentity = $this->userIdentityLookup->getUserIdentityByName( $username );
1806 $localId = ( $localUserIdentity && $localUserIdentity->getId() )
1807 ? $localUserIdentity->getId()
1808 : null;
1809 $flags = IDBAccessObject::READ_NORMAL;
1810
1811 // Fetch the user ID from the primary, so that we don't try to create the user
1812 // when they already exist, due to replication lag
1813 // @codeCoverageIgnoreStart
1814 if (
1815 !$localId &&
1816 $this->loadBalancer->getReaderIndex() !== 0
1817 ) {
1818 $localUserIdentity = $this->userIdentityLookup->getUserIdentityByName(
1819 $username,
1820 IDBAccessObject::READ_LATEST
1821 );
1822 $localId = ( $localUserIdentity && $localUserIdentity->getId() )
1823 ? $localUserIdentity->getId()
1824 : null;
1825 $flags = IDBAccessObject::READ_LATEST;
1826 }
1827 // @codeCoverageIgnoreEnd
1828
1829 if ( $localId ) {
1830 $this->logger->debug( __METHOD__ . ': {username} already exists locally', [
1831 'username' => $username,
1832 ] );
1833 $user->setId( $localId );
1834
1835 // Can't rely on a replica read, even if getUserIdentityByName() used
1836 // READ_NORMAL, because that method has an in-process cache not shared
1837 // with loadFromId.
1838 $flags = IDBAccessObject::READ_LATEST;
1839 $user->loadFromId( $flags );
1840 if ( $login ) {
1841 $remember = $source === self::AUTOCREATE_SOURCE_TEMP;
1842 $this->setSessionDataForUser( $user, $remember );
1843 }
1844 return Status::newGood()->warning( 'userexists' );
1845 }
1846
1847 // Wiki is read-only?
1848 if ( $this->readOnlyMode->isReadOnly() ) {
1849 $reason = $this->readOnlyMode->getReason();
1850 $this->logger->debug( __METHOD__ . ': denied because of read only mode: {reason}', [
1851 'username' => $username,
1852 'reason' => $reason,
1853 ] );
1854 $user->setId( 0 );
1855 $user->loadFromId();
1856 return Status::newFatal( wfMessage( 'readonlytext', $reason ) );
1857 }
1858
1859 // If there is a non-anonymous performer, don't use their session
1860 $session = null;
1861 if ( !$performer || $performer->getUser()->equals( $user ) ) {
1862 $session = $this->request->getSession();
1863 }
1864
1865 // Check the session, if we tried to create this user already there's
1866 // no point in retrying.
1867 if ( $session && $session->get( self::AUTOCREATE_BLOCKLIST ) ) {
1868 $this->logger->debug( __METHOD__ . ': blacklisted in session {sessionid}', [
1869 'username' => $username,
1870 'sessionid' => $session->getId(),
1871 ] );
1872 $user->setId( 0 );
1873 $user->loadFromId();
1874 $reason = $session->get( self::AUTOCREATE_BLOCKLIST );
1875 if ( $reason instanceof StatusValue ) {
1876 return Status::wrap( $reason );
1877 } else {
1878 return Status::newFatal( $reason );
1879 }
1880 }
1881
1882 // Is the username usable? (Previously isCreatable() was checked here but
1883 // that doesn't work with auto-creation of TempUser accounts by CentralAuth)
1884 if ( !$this->userNameUtils->isUsable( $username ) ) {
1885 $this->logger->debug( __METHOD__ . ': name "{username}" is not usable', [
1886 'username' => $username,
1887 ] );
1888 if ( $session ) {
1889 $session->set( self::AUTOCREATE_BLOCKLIST, 'noname' );
1890 }
1891 $user->setId( 0 );
1892 $user->loadFromId();
1893 return Status::newFatal( 'noname' );
1894 }
1895
1896 // Is the IP user able to create accounts?
1897 $performer ??= $this->userFactory->newAnonymous();
1898 $bypassAuthorization = $session ? $session->getProvider()->canAlwaysAutocreate() : false;
1899 if ( $source !== self::AUTOCREATE_SOURCE_MAINT && !$bypassAuthorization ) {
1900 $status = $this->authorizeAutoCreateAccount( $performer );
1901 if ( !$status->isOK() ) {
1902 $this->logger->debug( __METHOD__ . ': cannot create or autocreate accounts', [
1903 'username' => $username,
1904 'creator' => $performer->getUser()->getName(),
1905 ] );
1906 if ( $session ) {
1907 $session->set( self::AUTOCREATE_BLOCKLIST, $status );
1908 $session->persist();
1909 }
1910 $user->setId( 0 );
1911 $user->loadFromId();
1912 return Status::wrap( $status );
1913 }
1914 }
1915
1916 // Avoid account creation races on double submissions
1917 $cache = MediaWikiServices::getInstance()->getObjectCacheFactory()->getLocalClusterInstance();
1918 $lock = $cache->getScopedLock( $cache->makeGlobalKey( 'account', md5( $username ) ) );
1919 if ( !$lock ) {
1920 $this->logger->debug( __METHOD__ . ': Could not acquire account creation lock', [
1921 'user' => $username,
1922 ] );
1923 $user->setId( 0 );
1924 $user->loadFromId();
1925 return Status::newFatal( 'usernameinprogress' );
1926 }
1927
1928 // Denied by providers?
1929 $options = [
1930 'flags' => IDBAccessObject::READ_LATEST,
1931 'creating' => true,
1932 ];
1933 $providers = $this->getPreAuthenticationProviders() +
1934 $this->getPrimaryAuthenticationProviders() +
1935 $this->getSecondaryAuthenticationProviders();
1936 foreach ( $providers as $provider ) {
1937 $status = $provider->testUserForCreation( $user, $source, $options );
1938 if ( !$status->isGood() ) {
1939 $ret = Status::wrap( $status );
1940 $this->logger->debug( __METHOD__ . ': Provider denied creation of {username}: {reason}', [
1941 'username' => $username,
1942 'reason' => $ret->getWikiText( false, false, 'en' ),
1943 ] );
1944 if ( $session ) {
1945 $session->set( self::AUTOCREATE_BLOCKLIST, $status );
1946 }
1947 $user->setId( 0 );
1948 $user->loadFromId();
1949 return $ret;
1950 }
1951 }
1952
1953 $backoffKey = $cache->makeKey( 'AuthManager', 'autocreate-failed', md5( $username ) );
1954 if ( $cache->get( $backoffKey ) ) {
1955 $this->logger->debug( __METHOD__ . ': {username} denied by prior creation attempt failures', [
1956 'username' => $username,
1957 ] );
1958 $user->setId( 0 );
1959 $user->loadFromId();
1960 return Status::newFatal( 'authmanager-autocreate-exception' );
1961 }
1962
1963 // Checks passed, create the user...
1964 $from = $_SERVER['REQUEST_URI'] ?? 'CLI';
1965 $this->logger->info( __METHOD__ . ': creating new user ({username}) - from: {from}', [
1966 'username' => $username,
1967 'from' => $from,
1968 ] );
1969
1970 // Ignore warnings about primary connections/writes...hard to avoid here
1971 $trxProfiler = \Profiler::instance()->getTransactionProfiler();
1972 $scope = $trxProfiler->silenceForScope( $trxProfiler::EXPECTATION_REPLICAS_ONLY );
1973 try {
1974 $status = $user->addToDatabase();
1975 if ( !$status->isOK() ) {
1976 // Double-check for a race condition (T70012). We make use of the fact that when
1977 // addToDatabase fails due to the user already existing, the user object gets loaded.
1978 if ( $user->getId() ) {
1979 $this->logger->info( __METHOD__ . ': {username} already exists locally (race)', [
1980 'username' => $username,
1981 ] );
1982 if ( $login ) {
1983 $remember = $source === self::AUTOCREATE_SOURCE_TEMP;
1984 $this->setSessionDataForUser( $user, $remember );
1985 }
1986 $status = Status::newGood()->warning( 'userexists' );
1987 } else {
1988 $this->logger->error( __METHOD__ . ': {username} failed with message {msg}', [
1989 'username' => $username,
1990 'msg' => $status->getWikiText( false, false, 'en' )
1991 ] );
1992 $user->setId( 0 );
1993 $user->loadFromId();
1994 }
1995 return $status;
1996 }
1997 } catch ( \Exception $ex ) {
1998 $this->logger->error( __METHOD__ . ': {username} failed with exception {exception}', [
1999 'username' => $username,
2000 'exception' => $ex,
2001 ] );
2002 // Do not keep throwing errors for a while
2003 $cache->set( $backoffKey, 1, 600 );
2004 // Bubble up error; which should normally trigger DB rollbacks
2005 throw $ex;
2006 }
2007
2008 $this->setDefaultUserOptions( $user, false );
2009
2010 // Inform the providers
2011 $this->callMethodOnProviders( 6, 'autoCreatedAccount', [ $user, $source ] );
2012
2013 $this->getHookRunner()->onLocalUserCreated( $user, true );
2014 $user->saveSettings();
2015
2016 // Update user count
2017 DeferredUpdates::addUpdate( SiteStatsUpdate::factory( [ 'users' => 1 ] ) );
2018 // Watch user's userpage and talk page (except temp users)
2019 if ( $source !== self::AUTOCREATE_SOURCE_TEMP ) {
2020 DeferredUpdates::addCallableUpdate( function () use ( $user ) {
2021 $this->watchlistManager->addWatchIgnoringRights( $user, $user->getUserPage() );
2022 } );
2023 }
2024
2025 // Log the creation
2026 if ( $this->config->get( MainConfigNames::NewUserLog ) && $log ) {
2027 $logEntry = new \ManualLogEntry( 'newusers', 'autocreate' );
2028 $logEntry->setPerformer( $user );
2029 $logEntry->setTarget( $user->getUserPage() );
2030 $logEntry->setComment( '' );
2031 $logEntry->setParameters( [
2032 '4::userid' => $user->getId(),
2033 ] );
2034 $logEntry->insert();
2035 }
2036
2037 ScopedCallback::consume( $scope );
2038
2039 if ( $login ) {
2040 $remember = $source === self::AUTOCREATE_SOURCE_TEMP;
2041 $this->setSessionDataForUser( $user, $remember );
2042 }
2043
2044 return Status::newGood();
2045 }
2046
2054 private function authorizeAutoCreateAccount( Authority $creator ) {
2055 return $this->authorizeInternal(
2056 static function (
2057 string $action,
2058 PageIdentity $target,
2059 PermissionStatus $status
2060 ) use ( $creator ) {
2061 return $creator->authorizeWrite( $action, $target, $status );
2062 },
2063 'autocreateaccount'
2064 );
2065 }
2066
2067 // endregion -- end of Account creation
2068
2069 /***************************************************************************/
2070 // region Account linking
2077 public function canLinkAccounts() {
2078 foreach ( $this->getPrimaryAuthenticationProviders() as $provider ) {
2079 if ( $provider->accountCreationType() === PrimaryAuthenticationProvider::TYPE_LINK ) {
2080 return true;
2081 }
2082 }
2083 return false;
2084 }
2085
2095 public function beginAccountLink( User $user, array $reqs, $returnToUrl ) {
2096 $session = $this->request->getSession();
2097 $session->remove( self::ACCOUNT_LINK_STATE );
2098
2099 if ( !$this->canLinkAccounts() ) {
2100 // Caller should have called canLinkAccounts()
2101 throw new \LogicException( 'Account linking is not possible' );
2102 }
2103
2104 if ( !$user->isRegistered() ) {
2105 if ( !$this->userNameUtils->isUsable( $user->getName() ) ) {
2106 $msg = wfMessage( 'noname' );
2107 } else {
2108 $msg = wfMessage( 'authmanager-userdoesnotexist', $user->getName() );
2109 }
2110 return AuthenticationResponse::newFail( $msg );
2111 }
2112 foreach ( $reqs as $req ) {
2113 $req->username = $user->getName();
2114 $req->returnToUrl = $returnToUrl;
2115 }
2116
2117 $this->removeAuthenticationSessionData( null );
2118
2119 $providers = $this->getPreAuthenticationProviders();
2120 foreach ( $providers as $id => $provider ) {
2121 $status = $provider->testForAccountLink( $user );
2122 if ( !$status->isGood() ) {
2123 $this->logger->debug( __METHOD__ . ": Account linking pre-check failed by $id", [
2124 'user' => $user->getName(),
2125 ] );
2126 $ret = AuthenticationResponse::newFail(
2127 Status::wrap( $status )->getMessage()
2128 );
2129 $this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $ret ] );
2130 return $ret;
2131 }
2132 }
2133
2134 $state = [
2135 'username' => $user->getName(),
2136 'userid' => $user->getId(),
2137 'returnToUrl' => $returnToUrl,
2138 'primary' => null,
2139 'continueRequests' => [],
2140 ];
2141
2142 $providers = $this->getPrimaryAuthenticationProviders();
2143 foreach ( $providers as $id => $provider ) {
2144 if ( $provider->accountCreationType() !== PrimaryAuthenticationProvider::TYPE_LINK ) {
2145 continue;
2146 }
2147
2148 $res = $provider->beginPrimaryAccountLink( $user, $reqs );
2149 switch ( $res->status ) {
2150 case AuthenticationResponse::PASS:
2151 $this->logger->info( "Account linked to {user} by $id", [
2152 'user' => $user->getName(),
2153 ] );
2154 $this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $res ] );
2155 return $res;
2156
2157 case AuthenticationResponse::FAIL:
2158 $this->logger->debug( __METHOD__ . ": Account linking failed by $id", [
2159 'user' => $user->getName(),
2160 ] );
2161 $this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $res ] );
2162 return $res;
2163
2164 case AuthenticationResponse::ABSTAIN:
2165 // Continue loop
2166 break;
2167
2168 case AuthenticationResponse::REDIRECT:
2169 case AuthenticationResponse::UI:
2170 $this->logger->debug( __METHOD__ . ": Account linking $res->status by $id", [
2171 'user' => $user->getName(),
2172 ] );
2173 $this->fillRequests( $res->neededRequests, self::ACTION_LINK, $user->getName() );
2174 $state['primary'] = $id;
2175 $state['continueRequests'] = $res->neededRequests;
2176 $session->setSecret( self::ACCOUNT_LINK_STATE, $state );
2177 $session->persist();
2178 return $res;
2179
2180 // @codeCoverageIgnoreStart
2181 default:
2182 throw new \DomainException(
2183 get_class( $provider ) . "::beginPrimaryAccountLink() returned $res->status"
2184 );
2185 // @codeCoverageIgnoreEnd
2186 }
2187 }
2188
2189 $this->logger->debug( __METHOD__ . ': Account linking failed because no provider accepted', [
2190 'user' => $user->getName(),
2191 ] );
2192 $ret = AuthenticationResponse::newFail(
2193 wfMessage( 'authmanager-link-no-primary' )
2194 );
2195 $this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $ret ] );
2196 return $ret;
2197 }
2198
2204 public function continueAccountLink( array $reqs ) {
2205 $session = $this->request->getSession();
2206 try {
2207 if ( !$this->canLinkAccounts() ) {
2208 // Caller should have called canLinkAccounts()
2209 $session->remove( self::ACCOUNT_LINK_STATE );
2210 throw new \LogicException( 'Account linking is not possible' );
2211 }
2212
2213 $state = $session->getSecret( self::ACCOUNT_LINK_STATE );
2214 if ( !is_array( $state ) ) {
2215 return AuthenticationResponse::newFail(
2216 wfMessage( 'authmanager-link-not-in-progress' )
2217 );
2218 }
2219 $state['continueRequests'] = [];
2220
2221 // Step 0: Prepare and validate the input
2222
2223 $user = $this->userFactory->newFromName(
2224 (string)$state['username'],
2225 UserRigorOptions::RIGOR_USABLE
2226 );
2227 if ( !is_object( $user ) ) {
2228 $session->remove( self::ACCOUNT_LINK_STATE );
2229 return AuthenticationResponse::newFail( wfMessage( 'noname' ) );
2230 }
2231 if ( $user->getId() !== $state['userid'] ) {
2232 throw new \UnexpectedValueException(
2233 "User \"{$state['username']}\" is valid, but " .
2234 "ID {$user->getId()} !== {$state['userid']}!"
2235 );
2236 }
2237
2238 foreach ( $reqs as $req ) {
2239 $req->username = $state['username'];
2240 $req->returnToUrl = $state['returnToUrl'];
2241 }
2242
2243 // Step 1: Call the primary again until it succeeds
2244
2245 $provider = $this->getAuthenticationProvider( $state['primary'] );
2246 if ( !$provider instanceof PrimaryAuthenticationProvider ) {
2247 // Configuration changed? Force them to start over.
2248 // @codeCoverageIgnoreStart
2249 $ret = AuthenticationResponse::newFail(
2250 wfMessage( 'authmanager-link-not-in-progress' )
2251 );
2252 $this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $ret ] );
2253 $session->remove( self::ACCOUNT_LINK_STATE );
2254 return $ret;
2255 // @codeCoverageIgnoreEnd
2256 }
2257 $id = $provider->getUniqueId();
2258 $res = $provider->continuePrimaryAccountLink( $user, $reqs );
2259 switch ( $res->status ) {
2260 case AuthenticationResponse::PASS:
2261 $this->logger->info( "Account linked to {user} by $id", [
2262 'user' => $user->getName(),
2263 ] );
2264 $this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $res ] );
2265 $session->remove( self::ACCOUNT_LINK_STATE );
2266 return $res;
2267 case AuthenticationResponse::FAIL:
2268 $this->logger->debug( __METHOD__ . ": Account linking failed by $id", [
2269 'user' => $user->getName(),
2270 ] );
2271 $this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $res ] );
2272 $session->remove( self::ACCOUNT_LINK_STATE );
2273 return $res;
2274 case AuthenticationResponse::REDIRECT:
2275 case AuthenticationResponse::UI:
2276 $this->logger->debug( __METHOD__ . ": Account linking $res->status by $id", [
2277 'user' => $user->getName(),
2278 ] );
2279 $this->fillRequests( $res->neededRequests, self::ACTION_LINK, $user->getName() );
2280 $state['continueRequests'] = $res->neededRequests;
2281 $session->setSecret( self::ACCOUNT_LINK_STATE, $state );
2282 return $res;
2283 default:
2284 throw new \DomainException(
2285 get_class( $provider ) . "::continuePrimaryAccountLink() returned $res->status"
2286 );
2287 }
2288 } catch ( \Exception $ex ) {
2289 $session->remove( self::ACCOUNT_LINK_STATE );
2290 throw $ex;
2291 }
2292 }
2293
2294 // endregion -- end of Account linking
2295
2296 /***************************************************************************/
2297 // region Information methods
2318 public function getAuthenticationRequests( $action, UserIdentity $user = null ) {
2319 $options = [];
2320 $providerAction = $action;
2321
2322 // Figure out which providers to query
2323 switch ( $action ) {
2324 case self::ACTION_LOGIN:
2325 case self::ACTION_CREATE:
2326 $providers = $this->getPreAuthenticationProviders() +
2327 $this->getPrimaryAuthenticationProviders() +
2328 $this->getSecondaryAuthenticationProviders();
2329 break;
2330
2331 case self::ACTION_LOGIN_CONTINUE:
2332 $state = $this->request->getSession()->getSecret( self::AUTHN_STATE );
2333 return is_array( $state ) ? $state['continueRequests'] : [];
2334
2335 case self::ACTION_CREATE_CONTINUE:
2336 $state = $this->request->getSession()->getSecret( self::ACCOUNT_CREATION_STATE );
2337 return is_array( $state ) ? $state['continueRequests'] : [];
2338
2339 case self::ACTION_LINK:
2340 $providers = [];
2341 foreach ( $this->getPrimaryAuthenticationProviders() as $p ) {
2342 if ( $p->accountCreationType() === PrimaryAuthenticationProvider::TYPE_LINK ) {
2343 $providers[] = $p;
2344 }
2345 }
2346 break;
2347
2348 case self::ACTION_UNLINK:
2349 $providers = [];
2350 foreach ( $this->getPrimaryAuthenticationProviders() as $p ) {
2351 if ( $p->accountCreationType() === PrimaryAuthenticationProvider::TYPE_LINK ) {
2352 $providers[] = $p;
2353 }
2354 }
2355
2356 // To providers, unlink and remove are identical.
2357 $providerAction = self::ACTION_REMOVE;
2358 break;
2359
2360 case self::ACTION_LINK_CONTINUE:
2361 $state = $this->request->getSession()->getSecret( self::ACCOUNT_LINK_STATE );
2362 return is_array( $state ) ? $state['continueRequests'] : [];
2363
2364 case self::ACTION_CHANGE:
2365 case self::ACTION_REMOVE:
2366 $providers = $this->getPrimaryAuthenticationProviders() +
2367 $this->getSecondaryAuthenticationProviders();
2368 break;
2369
2370 // @codeCoverageIgnoreStart
2371 default:
2372 throw new \DomainException( __METHOD__ . ": Invalid action \"$action\"" );
2373 }
2374 // @codeCoverageIgnoreEnd
2375
2376 return $this->getAuthenticationRequestsInternal( $providerAction, $options, $providers, $user );
2377 }
2378
2388 private function getAuthenticationRequestsInternal(
2389 $providerAction, array $options, array $providers, UserIdentity $user = null
2390 ) {
2391 $user = $user ?: RequestContext::getMain()->getUser();
2392 $options['username'] = $user->isRegistered() ? $user->getName() : null;
2393
2394 // Query them and merge results
2395 $reqs = [];
2396 foreach ( $providers as $provider ) {
2397 $isPrimary = $provider instanceof PrimaryAuthenticationProvider;
2398 foreach ( $provider->getAuthenticationRequests( $providerAction, $options ) as $req ) {
2399 $id = $req->getUniqueId();
2400
2401 // If a required request if from a Primary, mark it as "primary-required" instead
2402 if ( $isPrimary && $req->required ) {
2403 $req->required = AuthenticationRequest::PRIMARY_REQUIRED;
2404 }
2405
2406 if (
2407 !isset( $reqs[$id] )
2408 || $req->required === AuthenticationRequest::REQUIRED
2409 || $reqs[$id] === AuthenticationRequest::OPTIONAL
2410 ) {
2411 $reqs[$id] = $req;
2412 }
2413 }
2414 }
2415
2416 // AuthManager has its own req for some actions
2417 switch ( $providerAction ) {
2418 case self::ACTION_LOGIN:
2419 $reqs[] = new RememberMeAuthenticationRequest(
2420 $this->config->get( MainConfigNames::RememberMe ) );
2421 $options['username'] = null; // Don't fill in the username below
2422 break;
2423
2424 case self::ACTION_CREATE:
2425 $reqs[] = new UsernameAuthenticationRequest;
2426 $reqs[] = new UserDataAuthenticationRequest;
2427 if ( $options['username'] !== null ) {
2428 $reqs[] = new CreationReasonAuthenticationRequest;
2429 $options['username'] = null; // Don't fill in the username below
2430 }
2431 break;
2432 }
2433
2434 // Fill in reqs data
2435 $this->fillRequests( $reqs, $providerAction, $options['username'], true );
2436
2437 // For self::ACTION_CHANGE, filter out any that something else *doesn't* allow changing
2438 if ( $providerAction === self::ACTION_CHANGE || $providerAction === self::ACTION_REMOVE ) {
2439 $reqs = array_filter( $reqs, function ( $req ) {
2440 return $this->allowsAuthenticationDataChange( $req, false )->isGood();
2441 } );
2442 }
2443
2444 return array_values( $reqs );
2445 }
2446
2454 private function fillRequests( array &$reqs, $action, $username, $forceAction = false ) {
2455 foreach ( $reqs as $req ) {
2456 if ( !$req->action || $forceAction ) {
2457 $req->action = $action;
2458 }
2459 $req->username ??= $username;
2460 }
2461 }
2462
2469 public function userExists( $username, $flags = IDBAccessObject::READ_NORMAL ) {
2470 foreach ( $this->getPrimaryAuthenticationProviders() as $provider ) {
2471 if ( $provider->testUserExists( $username, $flags ) ) {
2472 return true;
2473 }
2474 }
2475
2476 return false;
2477 }
2478
2490 public function allowsPropertyChange( $property ) {
2491 $providers = $this->getPrimaryAuthenticationProviders() +
2492 $this->getSecondaryAuthenticationProviders();
2493 foreach ( $providers as $provider ) {
2494 if ( !$provider->providerAllowsPropertyChange( $property ) ) {
2495 return false;
2496 }
2497 }
2498 return true;
2499 }
2500
2509 public function getAuthenticationProvider( $id ) {
2510 // Fast version
2511 if ( isset( $this->allAuthenticationProviders[$id] ) ) {
2512 return $this->allAuthenticationProviders[$id];
2513 }
2514
2515 // Slow version: instantiate each kind and check
2516 $providers = $this->getPrimaryAuthenticationProviders();
2517 if ( isset( $providers[$id] ) ) {
2518 return $providers[$id];
2519 }
2520 $providers = $this->getSecondaryAuthenticationProviders();
2521 if ( isset( $providers[$id] ) ) {
2522 return $providers[$id];
2523 }
2524 $providers = $this->getPreAuthenticationProviders();
2525 if ( isset( $providers[$id] ) ) {
2526 return $providers[$id];
2527 }
2528
2529 return null;
2530 }
2531
2532 // endregion -- end of Information methods
2533
2534 /***************************************************************************/
2535 // region Internal methods
2544 public function setAuthenticationSessionData( $key, $data ) {
2545 $session = $this->request->getSession();
2546 $arr = $session->getSecret( 'authData' );
2547 if ( !is_array( $arr ) ) {
2548 $arr = [];
2549 }
2550 $arr[$key] = $data;
2551 $session->setSecret( 'authData', $arr );
2552 }
2553
2561 public function getAuthenticationSessionData( $key, $default = null ) {
2562 $arr = $this->request->getSession()->getSecret( 'authData' );
2563 if ( is_array( $arr ) && array_key_exists( $key, $arr ) ) {
2564 return $arr[$key];
2565 } else {
2566 return $default;
2567 }
2568 }
2569
2575 public function removeAuthenticationSessionData( $key ) {
2576 $session = $this->request->getSession();
2577 if ( $key === null ) {
2578 $session->remove( 'authData' );
2579 } else {
2580 $arr = $session->getSecret( 'authData' );
2581 if ( is_array( $arr ) && array_key_exists( $key, $arr ) ) {
2582 unset( $arr[$key] );
2583 $session->setSecret( 'authData', $arr );
2584 }
2585 }
2586 }
2587
2594 protected function providerArrayFromSpecs( $class, array $specs ) {
2595 $i = 0;
2596 foreach ( $specs as &$spec ) {
2597 $spec = [ 'sort2' => $i++ ] + $spec + [ 'sort' => 0 ];
2598 }
2599 unset( $spec );
2600 // Sort according to the 'sort' field, and if they are equal, according to 'sort2'
2601 usort( $specs, static function ( $a, $b ) {
2602 return $a['sort'] <=> $b['sort']
2603 ?: $a['sort2'] <=> $b['sort2'];
2604 } );
2605
2606 $ret = [];
2607 foreach ( $specs as $spec ) {
2609 $provider = $this->objectFactory->createObject( $spec, [ 'assertClass' => $class ] );
2610 $provider->init( $this->logger, $this, $this->getHookContainer(), $this->config, $this->userNameUtils );
2611 $id = $provider->getUniqueId();
2612 if ( isset( $this->allAuthenticationProviders[$id] ) ) {
2613 throw new \RuntimeException(
2614 "Duplicate specifications for id $id (classes " .
2615 get_class( $provider ) . ' and ' .
2616 get_class( $this->allAuthenticationProviders[$id] ) . ')'
2617 );
2618 }
2619 $this->allAuthenticationProviders[$id] = $provider;
2620 $ret[$id] = $provider;
2621 }
2622 return $ret;
2623 }
2624
2628 private function getConfiguration() {
2629 return $this->config->get( MainConfigNames::AuthManagerConfig )
2630 ?: $this->config->get( MainConfigNames::AuthManagerAutoConfig );
2631 }
2632
2637 protected function getPreAuthenticationProviders() {
2638 if ( $this->preAuthenticationProviders === null ) {
2639 $conf = $this->getConfiguration();
2640 $this->preAuthenticationProviders = $this->providerArrayFromSpecs(
2641 PreAuthenticationProvider::class, $conf['preauth']
2642 );
2643 }
2644 return $this->preAuthenticationProviders;
2645 }
2646
2652 if ( $this->primaryAuthenticationProviders === null ) {
2653 $conf = $this->getConfiguration();
2654 $this->primaryAuthenticationProviders = $this->providerArrayFromSpecs(
2655 PrimaryAuthenticationProvider::class, $conf['primaryauth']
2656 );
2657 }
2658 return $this->primaryAuthenticationProviders;
2659 }
2660
2666 if ( $this->secondaryAuthenticationProviders === null ) {
2667 $conf = $this->getConfiguration();
2668 $this->secondaryAuthenticationProviders = $this->providerArrayFromSpecs(
2669 SecondaryAuthenticationProvider::class, $conf['secondaryauth']
2670 );
2671 }
2672 return $this->secondaryAuthenticationProviders;
2673 }
2674
2680 private function setSessionDataForUser( $user, $remember = null ) {
2681 $session = $this->request->getSession();
2682 $delay = $session->delaySave();
2683
2684 $session->resetId();
2685 $session->resetAllTokens();
2686 if ( $session->canSetUser() ) {
2687 $session->setUser( $user );
2688 }
2689 if ( $remember !== null ) {
2690 $session->setRememberUser( $remember );
2691 }
2692 $session->set( 'AuthManager:lastAuthId', $user->getId() );
2693 $session->set( 'AuthManager:lastAuthTimestamp', time() );
2694 $session->persist();
2695
2696 \Wikimedia\ScopedCallback::consume( $delay );
2697
2698 $this->getHookRunner()->onUserLoggedIn( $user );
2699 }
2700
2705 private function setDefaultUserOptions( User $user, $useContextLang ) {
2706 $user->setToken();
2707
2708 $lang = $useContextLang ? RequestContext::getMain()->getLanguage() : $this->contentLanguage;
2709 $this->userOptionsManager->setOption(
2710 $user,
2711 'language',
2712 $this->languageConverterFactory->getLanguageConverter( $lang )->getPreferredVariant()
2713 );
2714
2715 $contLangConverter = $this->languageConverterFactory->getLanguageConverter( $this->contentLanguage );
2716 if ( $contLangConverter->hasVariants() ) {
2717 $this->userOptionsManager->setOption(
2718 $user,
2719 'variant',
2720 $contLangConverter->getPreferredVariant()
2721 );
2722 }
2723 }
2724
2730 private function callMethodOnProviders( $which, $method, array $args ) {
2731 $providers = [];
2732 if ( $which & 1 ) {
2733 $providers += $this->getPreAuthenticationProviders();
2734 }
2735 if ( $which & 2 ) {
2736 $providers += $this->getPrimaryAuthenticationProviders();
2737 }
2738 if ( $which & 4 ) {
2739 $providers += $this->getSecondaryAuthenticationProviders();
2740 }
2741 foreach ( $providers as $provider ) {
2742 $provider->$method( ...$args );
2743 }
2744 }
2745
2749 private function getHookContainer() {
2750 return $this->hookContainer;
2751 }
2752
2756 private function getHookRunner() {
2757 return $this->hookRunner;
2758 }
2759
2760 // endregion -- end of Internal methods
2761
2762}
2763
2764/*
2765 * This file uses VisualStudio style region/endregion fold markers which are
2766 * recognised by PHPStorm. If modelines are enabled, the following editor
2767 * configuration will also enable folding in vim, if it is in the last 5 lines
2768 * of the file. We also use "@name" which creates sections in Doxygen.
2769 *
2770 * vim: foldmarker=//\ region,//\ endregion foldmethod=marker
2771 */
getRequest()
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Logs a warning that a deprecated feature was used.
if(!defined( 'MW_NO_SESSION') &&MW_ENTRY_POINT !=='cli' $wgLang
Definition Setup.php:538
if(!defined('MW_SETUP_CALLBACK'))
Definition WebStart.php:81
Base class for language-specific code.
Definition Language.php:66
A base class that implements some of the boilerplate for a PrimaryAuthenticationProvider.
This serves as the entry point to the authentication system.
canLinkAccounts()
Determine whether accounts can be linked.
const ACTION_UNLINK
Like ACTION_REMOVE but for linking providers only.
const SEC_FAIL
Security-sensitive should not be performed.
getPrimaryAuthenticationProviders()
Get the list of PrimaryAuthenticationProviders.
const ACTION_LOGIN_CONTINUE
Continue a login process that was interrupted by the need for user input or communication with an ext...
setAuthenticationSessionData( $key, $data)
Store authentication in the current session.
getAuthenticationProvider( $id)
Get a provider by ID.
securitySensitiveOperationStatus( $operation)
Whether security-sensitive operations should proceed.
revokeAccessForUser( $username)
Revoke any authentication credentials for a user.
beginAccountLink(User $user, array $reqs, $returnToUrl)
Start an account linking flow.
const SEC_REAUTH
Security-sensitive operations should re-authenticate.
getSecondaryAuthenticationProviders()
Get the list of SecondaryAuthenticationProviders.
allowsPropertyChange( $property)
Determine whether a user property should be allowed to be changed.
const ACTION_CREATE_CONTINUE
Continue a user creation process that was interrupted by the need for user input or communication wit...
const AUTOCREATE_SOURCE_TEMP
Auto-creation is due to temporary account creation on page save.
continueAccountLink(array $reqs)
Continue an account linking flow.
setLogger(LoggerInterface $logger)
userExists( $username, $flags=IDBAccessObject::READ_NORMAL)
Determine whether a username exists.
allowsAuthenticationDataChange(AuthenticationRequest $req, $checkData=true)
Validate a change of authentication data (e.g.
beginAuthentication(array $reqs, $returnToUrl)
Start an authentication flow.
probablyCanCreateAccount(Authority $creator)
Check whether $creator can create accounts.
getAuthenticationSessionData( $key, $default=null)
Fetch authentication data from the current session.
beginAccountCreation(Authority $creator, array $reqs, $returnToUrl)
Start an account creation flow.
canCreateAccounts()
Determine whether accounts can be created.
canCreateAccount( $username, $options=[])
Determine whether a particular account can be created.
changeAuthenticationData(AuthenticationRequest $req, $isAddition=false)
Change authentication data (e.g.
userCanAuthenticate( $username)
Determine whether a username can authenticate.
removeAuthenticationSessionData( $key)
Remove authentication data.
providerArrayFromSpecs( $class, array $specs)
Create an array of AuthenticationProviders from an array of ObjectFactory specs.
forcePrimaryAuthenticationProviders(array $providers, $why)
Force certain PrimaryAuthenticationProviders.
const AUTOCREATE_SOURCE_MAINT
Auto-creation is due to a Maintenance script.
autoCreateUser(User $user, $source, $login=true, $log=true, ?Authority $performer=null)
Auto-create an account, and optionally log into that account.
getAuthenticationRequests( $action, UserIdentity $user=null)
Return the applicable list of AuthenticationRequests.
continueAuthentication(array $reqs)
Continue an authentication flow.
const SEC_OK
Security-sensitive operations are ok.
setRequestContextUserFromSessionUser()
Call this method to set the request context user for the current request from the context session use...
const ACTION_LINK_CONTINUE
Continue a user linking process that was interrupted by the need for user input or communication with...
const ACTION_CHANGE
Change a user's credentials.
canAuthenticateNow()
Indicate whether user authentication is possible.
const ACTION_REMOVE
Remove a user's credentials.
const ACTION_LINK
Link an existing user to a third-party account.
authorizeCreateAccount(Authority $creator)
Authorize the account creation by $creator.
__construct(WebRequest $request, Config $config, ObjectFactory $objectFactory, HookContainer $hookContainer, ReadOnlyMode $readOnlyMode, UserNameUtils $userNameUtils, BlockManager $blockManager, WatchlistManager $watchlistManager, ILoadBalancer $loadBalancer, Language $contentLanguage, LanguageConverterFactory $languageConverterFactory, BotPasswordStore $botPasswordStore, UserFactory $userFactory, UserIdentityLookup $userIdentityLookup, UserOptionsManager $userOptionsManager)
const AUTOCREATE_SOURCE_SESSION
Auto-creation is due to SessionManager.
getPreAuthenticationProviders()
Get the list of PreAuthenticationProviders.
const ACTION_LOGIN
Log in with an existing (not necessarily local) user.
normalizeUsername( $username)
Provide normalized versions of the username for security checks.
continueAccountCreation(array $reqs)
Continue an account creation flow.
const ACTION_CREATE
Create a new user.
This is a value object for authentication requests.
static getRequestByClass(array $reqs, $class, $allowSubclasses=false)
Select a request by class name.
const FAIL
Indicates that the authentication failed.
const PASS
Indicates that the authentication succeeded.
static newFail(Message $msg, array $failReasons=[])
const UI
Indicates that the authentication needs further user input of some sort.
const REDIRECT
Indicates that the authentication needs to be redirected to a third party to proceed.
const ABSTAIN
Indicates that the authentication provider does not handle this request.
This transfers state between the login and account creation flows.
Returned from account creation to allow for logging into the created account.
const ALWAYS_REMEMBER
Indicates that the user will always be remembered.
const NEVER_REMEMBER
Indicates that the user will never be remembered.
This represents additional user data requested on the account creation form.
A service class for checking blocks.
Group all the pieces relevant to the context of a request into one instance.
Defer callable updates to run later in the PHP process.
Class for handling updates to the site_stats table.
This class provides an implementation of the core hook interfaces, forwarding hook calls to HookConta...
An interface for creating language converters.
A class containing constants representing the names of configuration variables.
const AllowSecuritySensitiveOperationIfCannotReauthenticate
Name constant for the AllowSecuritySensitiveOperationIfCannotReauthenticate setting,...
const RememberMe
Name constant for the RememberMe setting, for use with Config::get()
const ReauthenticateTime
Name constant for the ReauthenticateTime setting, for use with Config::get()
Service locator for MediaWiki core services.
A StatusValue for permission errors.
The WebRequest class encapsulates getting at data passed in the URL or via a POSTed form,...
Parent class for all special pages.
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don't need a full Title object,...
Generic operation result class Has warning/error list, boolean status and arbitrary value.
Definition Status.php:54
Stub object for the global user ($wgUser) that makes it possible to change the relevant underlying ob...
A service class to control user options.
Service for temporary user creation.
Creates User objects.
UserNameUtils service.
internal since 1.36
Definition User.php:93
getId( $wikiId=self::LOCAL)
Get the user's ID.
Definition User.php:1535
getUserPage()
Get this user's personal page title.
Definition User.php:2726
addToDatabase()
Add this existing user object to the database.
Definition User.php:2582
loadFromId( $flags=IDBAccessObject::READ_NORMAL)
Load user table data, given mId has already been set.
Definition User.php:444
setId( $v)
Set the user and reload all fields according to a given ID.
Definition User.php:1559
saveSettings()
Save this user's settings into the database.
Definition User.php:2375
isRegistered()
Get whether the user is registered.
Definition User.php:2133
getName()
Get the user name, or the IP of an anonymous user.
Definition User.php:1568
Generic operation result class Has warning/error list, boolean status and arbitrary value.
hasMessage( $message)
Returns true if the specified message is present as a warning or error.
isOK()
Returns whether the operation completed.
error( $message,... $parameters)
Add an error, do not set fatal flag This can be used for non-fatal errors.
warning( $message,... $parameters)
Add a new warning.
isGood()
Returns whether the operation completed and didn't have any error or warnings.
static newGood( $value=null)
Factory function for good results.
Determine whether a site is currently in read-only mode.
return[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=> '﮼', 31=> '﮽', 32=> '﮾', 33=> '﮿', 34=> '﯀', 35=> '﯁', 36=> '゛', 37=> '゜', 38=> '-', 39=> '֊', 40=> '᐀', 41=> '᭠', 42=> '᠆', 43=> '᠇', 44=> '‐', 45=> '‒', 46=> '–', 47=> '—', 48=> '―', 49=> '⁓', 50=> '⸗', 51=> '゠', 52=> '・', 53=> ',', 54=> '՝', 55=> '،', 56=> '؍', 57=> '٫', 58=> '٬', 59=> '߸', 60=> '᠂', 61=> '᠈', 62=> '꓾', 63=> '꘍', 64=> '꛵', 65=> '︑', 66=> ';', 67=> '؛', 68=> '⁏', 69=> '꛶', 70=> ':', 71=> '։', 72=> '؞', 73=> '܃', 74=> '܄', 75=> '܅', 76=> '܆', 77=> '܇', 78=> '܈', 79=> '࠰', 80=> '࠱', 81=> '࠲', 82=> '࠳', 83=> '࠴', 84=> '࠵', 85=> '࠶', 86=> '࠷', 87=> '࠸', 88=> '࠹', 89=> '࠺', 90=> '࠻', 91=> '࠼', 92=> '࠽', 93=> '࠾', 94=> '፡', 95=> '፣', 96=> '፤', 97=> '፥', 98=> '፦', 99=> '᠄', 100=> '᠅', 101=> '༔', 102=> '៖', 103=> '᭝', 104=> '꧇', 105=> '᛫', 106=> '᛬', 107=> '᛭', 108=> '꛴', 109=> '!', 110=> '¡', 111=> '՜', 112=> '߹', 113=> '᥄', 114=> '?', 115=> '¿', 116=> '⸮', 117=> '՞', 118=> '؟', 119=> '܉', 120=> '፧', 121=> '᥅', 122=> '⳺', 123=> '⳻', 124=> '꘏', 125=> '꛷', 126=> '‽', 127=> '⸘', 128=> '.', 129=> '᠁', 130=> '۔', 131=> '܁', 132=> '܂', 133=> '።', 134=> '᠃', 135=> '᠉', 136=> '᙮', 137=> '᭜', 138=> '⳹', 139=> '⳾', 140=> '⸰', 141=> '꓿', 142=> '꘎', 143=> '꛳', 144=> '︒', 145=> '·', 146=> '⸱', 147=> '।', 148=> '॥', 149=> '꣎', 150=> '꣏', 151=> '᰻', 152=> '᰼', 153=> '꡶', 154=> '꡷', 155=> '᜵', 156=> '᜶', 157=> '꤯', 158=> '၊', 159=> '။', 160=> '។', 161=> '៕', 162=> '᪨', 163=> '᪩', 164=> '᪪', 165=> '᪫', 166=> '᭞', 167=> '᭟', 168=> '꧈', 169=> '꧉', 170=> '꩝', 171=> '꩞', 172=> '꩟', 173=> '꯫', 174=> '𐩖', 175=> '𐩗', 176=> '𑁇', 177=> '𑁈', 178=> '𑃀', 179=> '𑃁', 180=> '᱾', 181=> '᱿', 182=> '܀', 183=> '߷', 184=> '჻', 185=> '፠', 186=> '፨', 187=> '᨞', 188=> '᨟', 189=> '᭚', 190=> '᭛', 191=> '꧁', 192=> '꧂', 193=> '꧃', 194=> '꧄', 195=> '꧅', 196=> '꧆', 197=> '꧊', 198=> '꧋', 199=> '꧌', 200=> '꧍', 201=> '꛲', 202=> '꥟', 203=> '𐡗', 204=> '𐬺', 205=> '𐬻', 206=> '𐬼', 207=> '𐬽', 208=> '𐬾', 209=> '𐬿', 210=> '𑂾', 211=> '𑂿', 212=> '⁕', 213=> '⁖', 214=> '⁘', 215=> '⁙', 216=> '⁚', 217=> '⁛', 218=> '⁜', 219=> '⁝', 220=> '⁞', 221=> '⸪', 222=> '⸫', 223=> '⸬', 224=> '⸭', 225=> '⳼', 226=> '⳿', 227=> '⸙', 228=> '𐤿', 229=> '𐄀', 230=> '𐄁', 231=> '𐄂', 232=> '𐎟', 233=> '𐏐', 234=> '𐤟', 235=> '𒑰', 236=> '𒑱', 237=> '𒑲', 238=> '𒑳', 239=> '\'', 240=> '‘', 241=> '’', 242=> '‚', 243=> '‛', 244=> '‹', 245=> '›', 246=> '"', 247 => '“', 248 => '”', 249 => '„', 250 => '‟', 251 => '«', 252 => '»', 253 => '(', 254 => ')', 255 => '[', 256 => ']', 257 => '{', 258 => '}', 259 => '༺', 260 => '༻', 261 => '༼', 262 => '༽', 263 => '᚛', 264 => '᚜', 265 => '⁅', 266 => '⁆', 267 => '⧼', 268 => '⧽', 269 => '⦃', 270 => '⦄', 271 => '⦅', 272 => '⦆', 273 => '⦇', 274 => '⦈', 275 => '⦉', 276 => '⦊', 277 => '⦋', 278 => '⦌', 279 => '⦍', 280 => '⦎', 281 => '⦏', 282 => '⦐', 283 => '⦑', 284 => '⦒', 285 => '⦓', 286 => '⦔', 287 => '⦕', 288 => '⦖', 289 => '⦗', 290 => '⦘', 291 => '⟬', 292 => '⟭', 293 => '⟮', 294 => '⟯', 295 => '⸂', 296 => '⸃', 297 => '⸄', 298 => '⸅', 299 => '⸉', 300 => '⸊', 301 => '⸌', 302 => '⸍', 303 => '⸜', 304 => '⸝', 305 => '⸠', 306 => '⸡', 307 => '⸢', 308 => '⸣', 309 => '⸤', 310 => '⸥', 311 => '⸦', 312 => '⸧', 313 => '⸨', 314 => '⸩', 315 => '〈', 316 => '〉', 317 => '「', 318 => '」', 319 => '﹝', 320 => '﹞', 321 => '︗', 322 => '︘', 323 => '﴾', 324 => '﴿', 325 => '§', 326 => '¶', 327 => '⁋', 328 => '©', 329 => '®', 330 => '@', 331 => '*', 332 => '⁎', 333 => '⁑', 334 => '٭', 335 => '꙳', 336 => '/', 337 => '⁄', 338 => '\\', 339 => '&', 340 => '⅋', 341 => '⁊', 342 => '#', 343 => '%', 344 => '٪', 345 => '‰', 346 => '؉', 347 => '‱', 348 => '؊', 349 => '⁒', 350 => '†', 351 => '‡', 352 => '•', 353 => '‣', 354 => '‧', 355 => '⁃', 356 => '⁌', 357 => '⁍', 358 => '′', 359 => '‵', 360 => '‸', 361 => '※', 362 => '‿', 363 => '⁔', 364 => '⁀', 365 => '⁐', 366 => '⁁', 367 => '⁂', 368 => '⸀', 369 => '⸁', 370 => '⸆', 371 => '⸇', 372 => '⸈', 373 => '⸋', 374 => '⸎', 375 => '⸏', 376 => '⸐', 377 => '⸑', 378 => '⸒', 379 => '⸓', 380 => '⸔', 381 => '⸕', 382 => '⸖', 383 => '⸚', 384 => '⸛', 385 => '⸞', 386 => '⸟', 387 => '꙾', 388 => '՚', 389 => '՛', 390 => '՟', 391 => '־', 392 => '׀', 393 => '׃', 394 => '׆', 395 => '׳', 396 => '״', 397 => '܊', 398 => '܋', 399 => '܌', 400 => '܍', 401 => '࡞', 402 => '᠀', 403 => '॰', 404 => '꣸', 405 => '꣹', 406 => '꣺', 407 => '෴', 408 => '๚', 409 => '๛', 410 => '꫞', 411 => '꫟', 412 => '༄', 413 => '༅', 414 => '༆', 415 => '༇', 416 => '༈', 417 => '༉', 418 => '༊', 419 => '࿐', 420 => '࿑', 421 => '་', 422 => '།', 423 => '༎', 424 => '༏', 425 => '༐', 426 => '༑', 427 => '༒', 428 => '྅', 429 => '࿒', 430 => '࿓', 431 => '࿔', 432 => '࿙', 433 => '࿚', 434 => '᰽', 435 => '᰾', 436 => '᰿', 437 => '᥀', 438 => '၌', 439 => '၍', 440 => '၎', 441 => '၏', 442 => '႞', 443 => '႟', 444 => '꩷', 445 => '꩸', 446 => '꩹', 447 => 'ៗ', 448 => '៘', 449 => '៙', 450 => '៚', 451 => '᪠', 452 => '᪡', 453 => '᪢', 454 => '᪣', 455 => '᪤', 456 => '᪥', 457 => '᪦', 458 => '᪬', 459 => '᪭', 460 => '᙭', 461 => '⵰', 462 => '꡴', 463 => '꡵', 464 => '᯼', 465 => '᯽', 466 => '᯾', 467 => '᯿', 468 => '꤮', 469 => '꧞', 470 => '꧟', 471 => '꩜', 472 => '𑁉', 473 => '𑁊', 474 => '𑁋', 475 => '𑁌', 476 => '𑁍', 477 => '𐩐', 478 => '𐩑', 479 => '𐩒', 480 => '𐩓', 481 => '𐩔', 482 => '𐩕', 483 => '𐩘', 484 => '𐬹', 485 => '𑂻', 486 => '𑂼', 487 => 'ʹ', 488 => '͵', 489 => 'ʺ', 490 => '˂', 491 => '˃', 492 => '˄', 493 => '˅', 494 => 'ˆ', 495 => 'ˇ', 496 => 'ˈ', 497 => 'ˉ', 498 => 'ˊ', 499 => 'ˋ', 500 => 'ˌ', 501 => 'ˍ', 502 => 'ˎ', 503 => 'ˏ', 504 => '˒', 505 => '˓', 506 => '˔', 507 => '˕', 508 => '˖', 509 => '˗', 510 => '˞', 511 => '˟', 512 => '˥', 513 => '˦', 514 => '˧', 515 => '˨', 516 => '˩', 517 => '˪', 518 => '˫', 519 => 'ˬ', 520 => '˭', 521 => '˯', 522 => '˰', 523 => '˱', 524 => '˲', 525 => '˳', 526 => '˴', 527 => '˵', 528 => '˶', 529 => '˷', 530 => '˸', 531 => '˹', 532 => '˺', 533 => '˻', 534 => '˼', 535 => '˽', 536 => '˾', 537 => '˿', 538 => '᎐', 539 => '᎑', 540 => '᎒', 541 => '᎓', 542 => '᎔', 543 => '᎕', 544 => '᎖', 545 => '᎗', 546 => '᎘', 547 => '᎙', 548 => '꜀', 549 => '꜁', 550 => '꜂', 551 => '꜃', 552 => '꜄', 553 => '꜅', 554 => '꜆', 555 => '꜇', 556 => '꜈', 557 => '꜉', 558 => '꜊', 559 => '꜋', 560 => '꜌', 561 => '꜍', 562 => '꜎', 563 => '꜏', 564 => '꜐', 565 => '꜑', 566 => '꜒', 567 => '꜓', 568 => '꜔', 569 => '꜕', 570 => '꜖', 571 => 'ꜗ', 572 => 'ꜘ', 573 => 'ꜙ', 574 => 'ꜚ', 575 => 'ꜛ', 576 => 'ꜜ', 577 => 'ꜝ', 578 => 'ꜞ', 579 => 'ꜟ', 580 => '꜠', 581 => '꜡', 582 => 'ꞈ', 583 => '꞉', 584 => '꞊', 585 => '°', 586 => '҂', 587 => '؈', 588 => '؎', 589 => '؏', 590 => '۞', 591 => '۩', 592 => '﷽', 593 => '߶', 594 => '৺', 595 => '୰', 596 => '௳', 597 => '௴', 598 => '௵', 599 => '௶', 600 => '௷', 601 => '௸', 602 => '௺', 603 => '౿', 604 => '൹', 605 => '꠨', 606 => '꠩', 607 => '꠪', 608 => '꠫', 609 => '꠶', 610 => '꠷', 611 => '꠹', 612 => '๏', 613 => '༁', 614 => '༂', 615 => '༃', 616 => '༓', 617 => '༕', 618 => '༖', 619 => '༗', 620 => '༚', 621 => '༛', 622 => '༜', 623 => '༝', 624 => '༞', 625 => '༟', 626 => '༴', 627 => '༶', 628 => '༸', 629 => '྾', 630 => '྿', 631 => '࿀', 632 => '࿁', 633 => '࿂', 634 => '࿃', 635 => '࿄', 636 => '࿅', 637 => '࿇', 638 => '࿈', 639 => '࿉', 640 => '࿊', 641 => '࿋', 642 => '࿌', 643 => '࿎', 644 => '࿏', 645 => '࿕', 646 => '࿖', 647 => '࿗', 648 => '࿘', 649 => '᧠', 650 => '᧡', 651 => '᧢', 652 => '᧣', 653 => '᧤', 654 => '᧥', 655 => '᧦', 656 => '᧧', 657 => '᧨', 658 => '᧩', 659 => '᧪', 660 => '᧫', 661 => '᧬', 662 => '᧭', 663 => '᧮', 664 => '᧯', 665 => '᧰', 666 => '᧱', 667 => '᧲', 668 => '᧳', 669 => '᧴', 670 => '᧵', 671 => '᧶', 672 => '᧷', 673 => '᧸', 674 => '᧹', 675 => '᧺', 676 => '᧻', 677 => '᧼', 678 => '᧽', 679 => '᧾', 680 => '᧿', 681 => '᭡', 682 => '᭢', 683 => '᭣', 684 => '᭤', 685 => '᭥', 686 => '᭦', 687 => '᭧', 688 => '᭨', 689 => '᭩', 690 => '᭪', 691 => '᭴', 692 => '᭵', 693 => '᭶', 694 => '᭷', 695 => '᭸', 696 => '᭹', 697 => '᭺', 698 => '᭻', 699 => '᭼', 700 => '℄', 701 => '℈', 702 => '℔', 703 => '℗', 704 => '℘', 705 => '℞', 706 => '℟', 707 => '℣', 708 => '℥', 709 => '℧', 710 => '℩', 711 => '℮', 712 => '℺', 713 => '⅁', 714 => '⅂', 715 => '⅃', 716 => '⅄', 717 => '⅊', 718 => '⅌', 719 => '⅍', 720 => '⅏', 721 => '←', 722 => '→', 723 => '↑', 724 => '↓', 725 => '↔', 726 => '↕', 727 => '↖', 728 => '↗', 729 => '↘', 730 => '↙', 731 => '↜', 732 => '↝', 733 => '↞', 734 => '↟', 735 => '↠', 736 => '↡', 737 => '↢', 738 => '↣', 739 => '↤', 740 => '↥', 741 => '↦', 742 => '↧', 743 => '↨', 744 => '↩', 745 => '↪', 746 => '↫', 747 => '↬', 748 => '↭', 749 => '↯', 750 => '↰', 751 => '↱', 752 => '↲', 753 => '↳', 754 => '↴', 755 => '↵', 756 => '↶', 757 => '↷', 758 => '↸', 759 => '↹', 760 => '↺', 761 => '↻', 762 => '↼', 763 => '↽', 764 => '↾', 765 => '↿', 766 => '⇀', 767 => '⇁', 768 => '⇂', 769 => '⇃', 770 => '⇄', 771 => '⇅', 772 => '⇆', 773 => '⇇', 774 => '⇈', 775 => '⇉', 776 => '⇊', 777 => '⇋', 778 => '⇌', 779 => '⇐', 780 => '⇑', 781 => '⇒', 782 => '⇓', 783 => '⇔', 784 => '⇕', 785 => '⇖', 786 => '⇗', 787 => '⇘', 788 => '⇙', 789 => '⇚', 790 => '⇛', 791 => '⇜', 792 => '⇝', 793 => '⇞', 794 => '⇟', 795 => '⇠', 796 => '⇡', 797 => '⇢', 798 => '⇣', 799 => '⇤', 800 => '⇥', 801 => '⇦', 802 => '⇧', 803 => '⇨', 804 => '⇩', 805 => '⇪', 806 => '⇫', 807 => '⇬', 808 => '⇭', 809 => '⇮', 810 => '⇯', 811 => '⇰', 812 => '⇱', 813 => '⇲', 814 => '⇳', 815 => '⇴', 816 => '⇵', 817 => '⇶', 818 => '⇷', 819 => '⇸', 820 => '⇹', 821 => '⇺', 822 => '⇻', 823 => '⇼', 824 => '⇽', 825 => '⇾', 826 => '⇿', 827 => '∀', 828 => '∁', 829 => '∂', 830 => '∃', 831 => '∅', 832 => '∆', 833 => '∇', 834 => '∈', 835 => '∊', 836 => '∋', 837 => '∍', 838 => '϶', 839 => '∎', 840 => '∏', 841 => '∐', 842 => '∑', 843 => '+', 844 => '±', 845 => '÷', 846 => '×', 847 => '<', 848 => '=', 849 => '>', 850 => '¬', 851 => '|', 852 => '¦', 853 => '‖', 854 => '~', 855 => '−', 856 => '∓', 857 => '∔', 858 => '∕', 859 => '∖', 860 => '∗', 861 => '∘', 862 => '∙', 863 => '√', 864 => '∛', 865 => '؆', 866 => '∜', 867 => '؇', 868 => '∝', 869 => '∞', 870 => '∟', 871 => '∠', 872 => '∡', 873 => '∢', 874 => '∣', 875 => '∥', 876 => '∧', 877 => '∨', 878 => '∩', 879 => '∪', 880 => '∫', 881 => '∮', 882 => '∱', 883 => '∲', 884 => '∳', 885 => '∴', 886 => '∵', 887 => '∶', 888 => '∷', 889 => '∸', 890 => '∹', 891 => '∺', 892 => '∻', 893 => '∼', 894 => '∽', 895 => '∾', 896 => '∿', 897 => '≀', 898 => '≂', 899 => '≃', 900 => '≅', 901 => '≆', 902 => '≈', 903 => '≊', 904 => '≋', 905 => '≌', 906 => '≍', 907 => '≎', 908 => '≏', 909 => '≐', 910 => '≑', 911 => '≒', 912 => '≓', 913 => '≔', 914 => '≕', 915 => '≖', 916 => '≗', 917 => '≘', 918 => '≙', 919 => '≚', 920 => '≛', 921 => '≜', 922 => '≝', 923 => '≞', 924 => '≟', 925 => '≡', 926 => '≣', 927 => '≤', 928 => '≥', 929 => '≦', 930 => '≧', 931 => '≨', 932 => '≩', 933 => '≪', 934 => '≫', 935 => '≬', 936 => '≲', 937 => '≳', 938 => '≶', 939 => '≷', 940 => '≺', 941 => '≻', 942 => '≼', 943 => '≽', 944 => '≾', 945 => '≿', 946 => '⊂', 947 => '⊃', 948 => '⊆', 949 => '⊇', 950 => '⊊', 951 => '⊋', 952 => '⊌', 953 => '⊍', 954 => '⊎', 955 => '⊏', 956 => '⊐', 957 => '⊑', 958 => '⊒', 959 => '⊓', 960 => '⊔', 961 => '⊕', 962 => '⊖', 963 => '⊗', 964 => '⊘', 965 => '⊙', 966 => '⊚', 967 => '⊛', 968 => '⊜', 969 => '⊝', 970 => '⊞', 971 => '⊟', 972 => '⊠', 973 => '⊡', 974 => '⊢', 975 => '⊣', 976 => '⊤', 977 => '⊥', 978 => '⊦', 979 => '⊧', 980 => '⊨', 981 => '⊩', 982 => '⊪', 983 => '⊫', 984 => '⊰', 985 => '⊱', 986 => '⊲', 987 => '⊳', 988 => '⊴', 989 => '⊵', 990 => '⊶', 991 => '⊷', 992 => '⊸', 993 => '⊹', 994 => '⊺', 995 => '⊻', 996 => '⊼', 997 => '⊽', 998 => '⊾', 999 => '⊿', 1000 => '⋀', 1001 => '⋁', 1002 => '⋂', 1003 => '⋃', 1004 => '⋄', 1005 => '⋅', 1006 => '⋆', 1007 => '⋇', 1008 => '⋈', 1009 => '⋉', 1010 => '⋊', 1011 => '⋋', 1012 => '⋌', 1013 => '⋍', 1014 => '⋎', 1015 => '⋏', 1016 => '⋐', 1017 => '⋑', 1018 => '⋒', 1019 => '⋓', 1020 => '⋔', 1021 => '⋕', 1022 => '⋖', 1023 => '⋗', 1024 => '⋘', 1025 => '⋙', 1026 => '⋚', 1027 => '⋛', 1028 => '⋜', 1029 => '⋝', 1030 => '⋞', 1031 => '⋟', 1032 => '⋤', 1033 => '⋥', 1034 => '⋦', 1035 => '⋧', 1036 => '⋨', 1037 => '⋩', 1038 => '⋮', 1039 => '⋯', 1040 => '⋰', 1041 => '⋱', 1042 => '⋲', 1043 => '⋳', 1044 => '⋴', 1045 => '⋵', 1046 => '⋶', 1047 => '⋷', 1048 => '⋸', 1049 => '⋹', 1050 => '⋺', 1051 => '⋻', 1052 => '⋼', 1053 => '⋽', 1054 => '⋾', 1055 => '⋿', 1056 => '⌀', 1057 => '⌁', 1058 => '⌂', 1059 => '⌃', 1060 => '⌄', 1061 => '⌅', 1062 => '⌆', 1063 => '⌇', 1064 => '⌈', 1065 => '⌉', 1066 => '⌊', 1067 => '⌋', 1068 => '⌌', 1069 => '⌍', 1070 => '⌎', 1071 => '⌏', 1072 => '⌐', 1073 => '⌑', 1074 => '⌒', 1075 => '⌓', 1076 => '⌔', 1077 => '⌕', 1078 => '⌖', 1079 => '⌗', 1080 => '⌘', 1081 => '⌙', 1082 => '⌚', 1083 => '⌛', 1084 => '⌜', 1085 => '⌝', 1086 => '⌞', 1087 => '⌟', 1088 => '⌠', 1089 => '⌡', 1090 => '⌢', 1091 => '⌣', 1092 => '⌤', 1093 => '⌥', 1094 => '⌦', 1095 => '⌧', 1096 => '⌨', 1097 => '⌫', 1098 => '⌬', 1099 => '⌭', 1100 => '⌮', 1101 => '⌯', 1102 => '⌰', 1103 => '⌱', 1104 => '⌲', 1105 => '⌳', 1106 => '⌴', 1107 => '⌵', 1108 => '⌶', 1109 => '⌷', 1110 => '⌸', 1111 => '⌹', 1112 => '⌺', 1113 => '⌻', 1114 => '⌼', 1115 => '⌽', 1116 => '⌾', 1117 => '⌿', 1118 => '⍀', 1119 => '⍁', 1120 => '⍂', 1121 => '⍃', 1122 => '⍄', 1123 => '⍅', 1124 => '⍆', 1125 => '⍇', 1126 => '⍈', 1127 => '⍉', 1128 => '⍊', 1129 => '⍋', 1130 => '⍌', 1131 => '⍍', 1132 => '⍎', 1133 => '⍏', 1134 => '⍐', 1135 => '⍑', 1136 => '⍒', 1137 => '⍓', 1138 => '⍔', 1139 => '⍕', 1140 => '⍖', 1141 => '⍗', 1142 => '⍘', 1143 => '⍙', 1144 => '⍚', 1145 => '⍛', 1146 => '⍜', 1147 => '⍝', 1148 => '⍞', 1149 => '⍟', 1150 => '⍠', 1151 => '⍡', 1152 => '⍢', 1153 => '⍣', 1154 => '⍤', 1155 => '⍥', 1156 => '⍦', 1157 => '⍧', 1158 => '⍨', 1159 => '⍩', 1160 => '⍪', 1161 => '⍫', 1162 => '⍬', 1163 => '⍭', 1164 => '⍮', 1165 => '⍯', 1166 => '⍰', 1167 => '⍱', 1168 => '⍲', 1169 => '⍳', 1170 => '⍴', 1171 => '⍵', 1172 => '⍶', 1173 => '⍷', 1174 => '⍸', 1175 => '⍹', 1176 => '⍺', 1177 => '⍻', 1178 => '⍼', 1179 => '⍽', 1180 => '⍾', 1181 => '⍿', 1182 => '⎀', 1183 => '⎁', 1184 => '⎂', 1185 => '⎃', 1186 => '⎄', 1187 => '⎅', 1188 => '⎆', 1189 => '⎇', 1190 => '⎈', 1191 => '⎉', 1192 => '⎊', 1193 => '⎋', 1194 => '⎌', 1195 => '⎍', 1196 => '⎎', 1197 => '⎏', 1198 => '⎐', 1199 => '⎑', 1200 => '⎒', 1201 => '⎓', 1202 => '⎔', 1203 => '⎕', 1204 => '⎖', 1205 => '⎗', 1206 => '⎘', 1207 => '⎙', 1208 => '⎚', 1209 => '⎛', 1210 => '⎜', 1211 => '⎝', 1212 => '⎞', 1213 => '⎟', 1214 => '⎠', 1215 => '⎡', 1216 => '⎢', 1217 => '⎣', 1218 => '⎤', 1219 => '⎥', 1220 => '⎦', 1221 => '⎧', 1222 => '⎨', 1223 => '⎩', 1224 => '⎪', 1225 => '⎫', 1226 => '⎬', 1227 => '⎭', 1228 => '⎮', 1229 => '⎯', 1230 => '⎰', 1231 => '⎱', 1232 => '⎲', 1233 => '⎳', 1234 => '⎴', 1235 => '⎵', 1236 => '⎶', 1237 => '⎷', 1238 => '⎸', 1239 => '⎹', 1240 => '⎺', 1241 => '⎻', 1242 => '⎼', 1243 => '⎽', 1244 => '⎾', 1245 => '⎿', 1246 => '⏀', 1247 => '⏁', 1248 => '⏂', 1249 => '⏃', 1250 => '⏄', 1251 => '⏅', 1252 => '⏆', 1253 => '⏇', 1254 => '⏈', 1255 => '⏉', 1256 => '⏊', 1257 => '⏋', 1258 => '⏌', 1259 => '⏍', 1260 => '⏎', 1261 => '⏏', 1262 => '⏐', 1263 => '⏑', 1264 => '⏒', 1265 => '⏓', 1266 => '⏔', 1267 => '⏕', 1268 => '⏖', 1269 => '⏗', 1270 => '⏘', 1271 => '⏙', 1272 => '⏚', 1273 => '⏛', 1274 => '⏜', 1275 => '⏝', 1276 => '⏞', 1277 => '⏟', 1278 => '⏠', 1279 => '⏡', 1280 => '⏢', 1281 => '⏣', 1282 => '⏤', 1283 => '⏥', 1284 => '⏦', 1285 => '⏧', 1286 => '⏨', 1287 => '⏩', 1288 => '⏪', 1289 => '⏫', 1290 => '⏬', 1291 => '⏭', 1292 => '⏮', 1293 => '⏯', 1294 => '⏰', 1295 => '⏱', 1296 => '⏲', 1297 => '⏳', 1298 => '␀', 1299 => '␁', 1300 => '␂', 1301 => '␃', 1302 => '␄', 1303 => '␅', 1304 => '␆', 1305 => '␇', 1306 => '␈', 1307 => '␉', 1308 => '␊', 1309 => '␋', 1310 => '␌', 1311 => '␍', 1312 => '␎', 1313 => '␏', 1314 => '␐', 1315 => '␑', 1316 => '␒', 1317 => '␓', 1318 => '␔', 1319 => '␕', 1320 => '␖', 1321 => '␗', 1322 => '␘', 1323 => '␙', 1324 => '␚', 1325 => '␛', 1326 => '␜', 1327 => '␝', 1328 => '␞', 1329 => '␟', 1330 => '␠', 1331 => '␡', 1332 => '␢', 1333 => '␣', 1334 => '␤', 1335 => '␥', 1336 => '␦', 1337 => '⑀', 1338 => '⑁', 1339 => '⑂', 1340 => '⑃', 1341 => '⑄', 1342 => '⑅', 1343 => '⑆', 1344 => '⑇', 1345 => '⑈', 1346 => '⑉', 1347 => '⑊', 1348 => '─', 1349 => '━', 1350 => '│', 1351 => '┃', 1352 => '┄', 1353 => '┅', 1354 => '┆', 1355 => '┇', 1356 => '┈', 1357 => '┉', 1358 => '┊', 1359 => '┋', 1360 => '┌', 1361 => '┍', 1362 => '┎', 1363 => '┏', 1364 => '┐', 1365 => '┑', 1366 => '┒', 1367 => '┓', 1368 => '└', 1369 => '┕', 1370 => '┖', 1371 => '┗', 1372 => '┘', 1373 => '┙', 1374 => '┚', 1375 => '┛', 1376 => '├', 1377 => '┝', 1378 => '┞', 1379 => '┟', 1380 => '┠', 1381 => '┡', 1382 => '┢', 1383 => '┣', 1384 => '┤', 1385 => '┥', 1386 => '┦', 1387 => '┧', 1388 => '┨', 1389 => '┩', 1390 => '┪', 1391 => '┫', 1392 => '┬', 1393 => '┭', 1394 => '┮', 1395 => '┯', 1396 => '┰', 1397 => '┱', 1398 => '┲', 1399 => '┳', 1400 => '┴', 1401 => '┵', 1402 => '┶', 1403 => '┷', 1404 => '┸', 1405 => '┹', 1406 => '┺', 1407 => '┻', 1408 => '┼', 1409 => '┽', 1410 => '┾', 1411 => '┿', 1412 => '╀', 1413 => '╁', 1414 => '╂', 1415 => '╃', 1416 => '╄', 1417 => '╅', 1418 => '╆', 1419 => '╇', 1420 => '╈', 1421 => '╉', 1422 => '╊', 1423 => '╋', 1424 => '╌', 1425 => '╍', 1426 => '╎', 1427 => '╏', 1428 => '═', 1429 => '║', 1430 => '╒', 1431 => '╓', 1432 => '╔', 1433 => '╕', 1434 => '╖', 1435 => '╗', 1436 => '╘', 1437 => '╙', 1438 => '╚', 1439 => '╛', 1440 => '╜', 1441 => '╝', 1442 => '╞', 1443 => '╟', 1444 => '╠', 1445 => '╡', 1446 => '╢', 1447 => '╣', 1448 => '╤', 1449 => '╥', 1450 => '╦', 1451 => '╧', 1452 => '╨', 1453 => '╩', 1454 => '╪', 1455 => '╫', 1456 => '╬', 1457 => '╭', 1458 => '╮', 1459 => '╯', 1460 => '╰', 1461 => '╱', 1462 => '╲', 1463 => '╳', 1464 => '╴', 1465 => '╵', 1466 => '╶', 1467 => '╷', 1468 => '╸', 1469 => '╹', 1470 => '╺', 1471 => '╻', 1472 => '╼', 1473 => '╽', 1474 => '╾', 1475 => '╿', 1476 => '▀', 1477 => '▁', 1478 => '▂', 1479 => '▃', 1480 => '▄', 1481 => '▅', 1482 => '▆', 1483 => '▇', 1484 => '█', 1485 => '▉', 1486 => '▊', 1487 => '▋', 1488 => '▌', 1489 => '▍', 1490 => '▎', 1491 => '▏', 1492 => '▐', 1493 => '░', 1494 => '▒', 1495 => '▓', 1496 => '▔', 1497 => '▕', 1498 => '▖', 1499 => '▗', 1500 => '▘', 1501 => '▙', 1502 => '▚', 1503 => '▛', 1504 => '▜', 1505 => '▝', 1506 => '▞', 1507 => '▟', 1508 => '■', 1509 => '□', 1510 => '▢', 1511 => '▣', 1512 => '▤', 1513 => '▥', 1514 => '▦', 1515 => '▧', 1516 => '▨', 1517 => '▩', 1518 => '▪', 1519 => '▫', 1520 => '▬', 1521 => '▭', 1522 => '▮', 1523 => '▯', 1524 => '▰', 1525 => '▱', 1526 => '▲', 1527 => '△', 1528 => '▴', 1529 => '▵', 1530 => '▶', 1531 => '▷', 1532 => '▸', 1533 => '▹', 1534 => '►', 1535 => '▻', 1536 => '▼', 1537 => '▽', 1538 => '▾', 1539 => '▿', 1540 => '◀', 1541 => '◁', 1542 => '◂', 1543 => '◃', 1544 => '◄', 1545 => '◅', 1546 => '◆', 1547 => '◇', 1548 => '◈', 1549 => '◉', 1550 => '◊', 1551 => '○', 1552 => '◌', 1553 => '◍', 1554 => '◎', 1555 => '●', 1556 => '◐', 1557 => '◑', 1558 => '◒', 1559 => '◓', 1560 => '◔', 1561 => '◕', 1562 => '◖', 1563 => '◗', 1564 => '◘', 1565 => '◙', 1566 => '◚', 1567 => '◛', 1568 => '◜', 1569 => '◝', 1570 => '◞', 1571 => '◟', 1572 => '◠', 1573 => '◡', 1574 => '◢', 1575 => '◣', 1576 => '◤', 1577 => '◥', 1578 => '◦', 1579 => '◧', 1580 => '◨', 1581 => '◩', 1582 => '◪', 1583 => '◫', 1584 => '◬', 1585 => '◭', 1586 => '◮', 1587 => '◯', 1588 => '◰', 1589 => '◱', 1590 => '◲', 1591 => '◳', 1592 => '◴', 1593 => '◵', 1594 => '◶', 1595 => '◷', 1596 => '◸', 1597 => '◹', 1598 => '◺', 1599 => '◻', 1600 => '◼', 1601 => '◽', 1602 => '◾', 1603 => '◿', 1604 => '☀', 1605 => '☁', 1606 => '☂', 1607 => '☃', 1608 => '☄', 1609 => '★', 1610 => '☆', 1611 => '☇', 1612 => '☈', 1613 => '☉', 1614 => '☊', 1615 => '☋', 1616 => '☌', 1617 => '☍', 1618 => '☎', 1619 => '☏', 1620 => '☐', 1621 => '☑', 1622 => '☒', 1623 => '☓', 1624 => '☔', 1625 => '☕', 1626 => '☖', 1627 => '☗', 1628 => '☘', 1629 => '☙', 1630 => '☚', 1631 => '☛', 1632 => '☜', 1633 => '☝', 1634 => '☞', 1635 => '☟', 1636 => '☠', 1637 => '☡', 1638 => '☢', 1639 => '☣', 1640 => '☤', 1641 => '☥', 1642 => '☦', 1643 => '☧', 1644 => '☨', 1645 => '☩', 1646 => '☪', 1647 => '☫', 1648 => '☬', 1649 => '☭', 1650 => '☮', 1651 => '☯', 1652 => '☸', 1653 => '☹', 1654 => '☺', 1655 => '☻', 1656 => '☼', 1657 => '☽', 1658 => '☾', 1659 => '☿', 1660 => '♀', 1661 => '♁', 1662 => '♂', 1663 => '♃', 1664 => '♄', 1665 => '♅', 1666 => '♆', 1667 => '♇', 1668 => '♈', 1669 => '♉', 1670 => '♊', 1671 => '♋', 1672 => '♌', 1673 => '♍', 1674 => '♎', 1675 => '♏', 1676 => '♐', 1677 => '♑', 1678 => '♒', 1679 => '♓', 1680 => '♔', 1681 => '♕', 1682 => '♖', 1683 => '♗', 1684 => '♘', 1685 => '♙', 1686 => '♚', 1687 => '♛', 1688 => '♜', 1689 => '♝', 1690 => '♞', 1691 => '♟', 1692 => '♠', 1693 => '♡', 1694 => '♢', 1695 => '♣', 1696 => '♤', 1697 => '♥', 1698 => '♦', 1699 => '♧', 1700 => '♨', 1701 => '♩', 1702 => '♪', 1703 => '♫', 1704 => '♬', 1705 => '♰', 1706 => '♱', 1707 => '♲', 1708 => '♳', 1709 => '♴', 1710 => '♵', 1711 => '♶', 1712 => '♷', 1713 => '♸', 1714 => '♹', 1715 => '♺', 1716 => '♻', 1717 => '♼', 1718 => '♽', 1719 => '♾', 1720 => '♿', 1721 => '⚀', 1722 => '⚁', 1723 => '⚂', 1724 => '⚃', 1725 => '⚄', 1726 => '⚅', 1727 => '⚆', 1728 => '⚇', 1729 => '⚈', 1730 => '⚉', 1731 => '⚐', 1732 => '⚑', 1733 => '⚒', 1734 => '⚓', 1735 => '⚔', 1736 => '⚕', 1737 => '⚖', 1738 => '⚗', 1739 => '⚘', 1740 => '⚙', 1741 => '⚚', 1742 => '⚛', 1743 => '⚜', 1744 => '⚝', 1745 => '⚞', 1746 => '⚟', 1747 => '⚠', 1748 => '⚡', 1749 => '⚢', 1750 => '⚣', 1751 => '⚤', 1752 => '⚥', 1753 => '⚦', 1754 => '⚧', 1755 => '⚨', 1756 => '⚩', 1757 => '⚪', 1758 => '⚫', 1759 => '⚬', 1760 => '⚭', 1761 => '⚮', 1762 => '⚯', 1763 => '⚰', 1764 => '⚱', 1765 => '⚲', 1766 => '⚳', 1767 => '⚴', 1768 => '⚵', 1769 => '⚶', 1770 => '⚷', 1771 => '⚸', 1772 => '⚹', 1773 => '⚺', 1774 => '⚻', 1775 => '⚼', 1776 => '⚽', 1777 => '⚾', 1778 => '⚿', 1779 => '⛀', 1780 => '⛁', 1781 => '⛂', 1782 => '⛃', 1783 => '⛄', 1784 => '⛅', 1785 => '⛆', 1786 => '⛇', 1787 => '⛈', 1788 => '⛉', 1789 => '⛊', 1790 => '⛋', 1791 => '⛌', 1792 => '⛍', 1793 => '⛎', 1794 => '⛏', 1795 => '⛐', 1796 => '⛑', 1797 => '⛒', 1798 => '⛓', 1799 => '⛔', 1800 => '⛕', 1801 => '⛖', 1802 => '⛗', 1803 => '⛘', 1804 => '⛙', 1805 => '⛚', 1806 => '⛛', 1807 => '⛜', 1808 => '⛝', 1809 => '⛞', 1810 => '⛟', 1811 => '⛠', 1812 => '⛡', 1813 => '⛢', 1814 => '⛣', 1815 => '⛤', 1816 => '⛥', 1817 => '⛦', 1818 => '⛧', 1819 => '⛨', 1820 => '⛩', 1821 => '⛪', 1822 => '⛫', 1823 => '⛬', 1824 => '⛭', 1825 => '⛮', 1826 => '⛯', 1827 => '⛰', 1828 => '⛱', 1829 => '⛲', 1830 => '⛳', 1831 => '⛴', 1832 => '⛵', 1833 => '⛶', 1834 => '⛷', 1835 => '⛸', 1836 => '⛹', 1837 => '⛺', 1838 => '⛻', 1839 => '⛼', 1840 => '⛽', 1841 => '⛾', 1842 => '⛿', 1843 => '✁', 1844 => '✂', 1845 => '✃', 1846 => '✄', 1847 => '✅', 1848 => '✆', 1849 => '✇', 1850 => '✈', 1851 => '✉', 1852 => '✊', 1853 => '✋', 1854 => '✌', 1855 => '✍', 1856 => '✎', 1857 => '✏', 1858 => '✐', 1859 => '✑', 1860 => '✒', 1861 => '✓', 1862 => '✔', 1863 => '✕', 1864 => '✖', 1865 => '✗', 1866 => '✘', 1867 => '✙', 1868 => '✚', 1869 => '✛', 1870 => '✜', 1871 => '✝', 1872 => '✞', 1873 => '✟', 1874 => '✠', 1875 => '✡', 1876 => '✢', 1877 => '✣', 1878 => '✤', 1879 => '✥', 1880 => '✦', 1881 => '✧', 1882 => '✨', 1883 => '✩', 1884 => '✪', 1885 => '✫', 1886 => '✬', 1887 => '✭', 1888 => '✮', 1889 => '✯', 1890 => '✰', 1891 => '✱', 1892 => '✲', 1893 => '✳', 1894 => '✴', 1895 => '✵', 1896 => '✶', 1897 => '✷', 1898 => '✸', 1899 => '✹', 1900 => '✺', 1901 => '✻', 1902 => '✼', 1903 => '✽', 1904 => '✾', 1905 => '✿', 1906 => '❀', 1907 => '❁', 1908 => '❂', 1909 => '❃', 1910 => '❄', 1911 => '❅', 1912 => '❆', 1913 => '❇', 1914 => '❈', 1915 => '❉', 1916 => '❊', 1917 => '❋', 1918 => '❌', 1919 => '❍', 1920 => '❎', 1921 => '❏', 1922 => '❐', 1923 => '❑', 1924 => '❒', 1925 => '❓', 1926 => '❔', 1927 => '❕', 1928 => '❖', 1929 => '❗', 1930 => '❘', 1931 => '❙', 1932 => '❚', 1933 => '❛', 1934 => '❜', 1935 => '❝', 1936 => '❞', 1937 => '❟', 1938 => '❠', 1939 => '❡', 1940 => '❢', 1941 => '❣', 1942 => '❤', 1943 => '❥', 1944 => '❦', 1945 => '❧', 1946 => '❨', 1947 => '❩', 1948 => '❪', 1949 => '❫', 1950 => '❬', 1951 => '❭', 1952 => '❮', 1953 => '❯', 1954 => '❰', 1955 => '❱', 1956 => '❲', 1957 => '❳', 1958 => '❴', 1959 => '❵', 1960 => '➔', 1961 => '➕', 1962 => '➖', 1963 => '➗', 1964 => '➘', 1965 => '➙', 1966 => '➚', 1967 => '➛', 1968 => '➜', 1969 => '➝', 1970 => '➞', 1971 => '➟', 1972 => '➠', 1973 => '➡', 1974 => '➢', 1975 => '➣', 1976 => '➤', 1977 => '➥', 1978 => '➦', 1979 => '➧', 1980 => '➨', 1981 => '➩', 1982 => '➪', 1983 => '➫', 1984 => '➬', 1985 => '➭', 1986 => '➮', 1987 => '➯', 1988 => '➰', 1989 => '➱', 1990 => '➲', 1991 => '➳', 1992 => '➴', 1993 => '➵', 1994 => '➶', 1995 => '➷', 1996 => '➸', 1997 => '➹', 1998 => '➺', 1999 => '➻', 2000 => '➼', 2001 => '➽', 2002 => '➾', 2003 => '➿', 2004 => '⟀', 2005 => '⟁', 2006 => '⟂', 2007 => '⟃', 2008 => '⟄', 2009 => '⟅', 2010 => '⟆', 2011 => '⟇', 2012 => '⟈', 2013 => '⟉', 2014 => '⟊', 2015 => '⟌', 2016 => '⟎', 2017 => '⟏', 2018 => '⟐', 2019 => '⟑', 2020 => '⟒', 2021 => '⟓', 2022 => '⟔', 2023 => '⟕', 2024 => '⟖', 2025 => '⟗', 2026 => '⟘', 2027 => '⟙', 2028 => '⟚', 2029 => '⟛', 2030 => '⟜', 2031 => '⟝', 2032 => '⟞', 2033 => '⟟', 2034 => '⟠', 2035 => '⟡', 2036 => '⟢', 2037 => '⟣', 2038 => '⟤', 2039 => '⟥', 2040 => '⟦', 2041 => '⟧', 2042 => '⟨', 2043 => '⟩', 2044 => '⟪', 2045 => '⟫', 2046 => '⟰', 2047 => '⟱', 2048 => '⟲', 2049 => '⟳', 2050 => '⟴', 2051 => '⟵', 2052 => '⟶', 2053 => '⟷', 2054 => '⟸', 2055 => '⟹', 2056 => '⟺', 2057 => '⟻', 2058 => '⟼', 2059 => '⟽', 2060 => '⟾', 2061 => '⟿', 2062 => '⤀', 2063 => '⤁', 2064 => '⤂', 2065 => '⤃', 2066 => '⤄', 2067 => '⤅', 2068 => '⤆', 2069 => '⤇', 2070 => '⤈', 2071 => '⤉', 2072 => '⤊', 2073 => '⤋', 2074 => '⤌', 2075 => '⤍', 2076 => '⤎', 2077 => '⤏', 2078 => '⤐', 2079 => '⤑', 2080 => '⤒', 2081 => '⤓', 2082 => '⤔', 2083 => '⤕', 2084 => '⤖', 2085 => '⤗', 2086 => '⤘', 2087 => '⤙', 2088 => '⤚', 2089 => '⤛', 2090 => '⤜', 2091 => '⤝', 2092 => '⤞', 2093 => '⤟', 2094 => '⤠', 2095 => '⤡', 2096 => '⤢', 2097 => '⤣', 2098 => '⤤', 2099 => '⤥', 2100 => '⤦', 2101 => '⤧', 2102 => '⤨', 2103 => '⤩', 2104 => '⤪', 2105 => '⤫', 2106 => '⤬', 2107 => '⤭', 2108 => '⤮', 2109 => '⤯', 2110 => '⤰', 2111 => '⤱', 2112 => '⤲', 2113 => '⤳', 2114 => '⤴', 2115 => '⤵', 2116 => '⤶', 2117 => '⤷', 2118 => '⤸', 2119 => '⤹', 2120 => '⤺', 2121 => '⤻', 2122 => '⤼', 2123 => '⤽', 2124 => '⤾', 2125 => '⤿', 2126 => '⥀', 2127 => '⥁', 2128 => '⥂', 2129 => '⥃', 2130 => '⥄', 2131 => '⥅', 2132 => '⥆', 2133 => '⥇', 2134 => '⥈', 2135 => '⥉', 2136 => '⥊', 2137 => '⥋', 2138 => '⥌', 2139 => '⥍', 2140 => '⥎', 2141 => '⥏', 2142 => '⥐', 2143 => '⥑', 2144 => '⥒', 2145 => '⥓', 2146 => '⥔', 2147 => '⥕', 2148 => '⥖', 2149 => '⥗', 2150 => '⥘', 2151 => '⥙', 2152 => '⥚', 2153 => '⥛', 2154 => '⥜', 2155 => '⥝', 2156 => '⥞', 2157 => '⥟', 2158 => '⥠', 2159 => '⥡', 2160 => '⥢', 2161 => '⥣', 2162 => '⥤', 2163 => '⥥', 2164 => '⥦', 2165 => '⥧', 2166 => '⥨', 2167 => '⥩', 2168 => '⥪', 2169 => '⥫', 2170 => '⥬', 2171 => '⥭', 2172 => '⥮', 2173 => '⥯', 2174 => '⥰', 2175 => '⥱', 2176 => '⥲', 2177 => '⥳', 2178 => '⥴', 2179 => '⥵', 2180 => '⥶', 2181 => '⥷', 2182 => '⥸', 2183 => '⥹', 2184 => '⥺', 2185 => '⥻', 2186 => '⥼', 2187 => '⥽', 2188 => '⥾', 2189 => '⥿', 2190 => '⦀', 2191 => '⦁', 2192 => '⦂', 2193 => '⦙', 2194 => '⦚', 2195 => '⦛', 2196 => '⦜', 2197 => '⦝', 2198 => '⦞', 2199 => '⦟', 2200 => '⦠', 2201 => '⦡', 2202 => '⦢', 2203 => '⦣', 2204 => '⦤', 2205 => '⦥', 2206 => '⦦', 2207 => '⦧', 2208 => '⦨', 2209 => '⦩', 2210 => '⦪', 2211 => '⦫', 2212 => '⦬', 2213 => '⦭', 2214 => '⦮', 2215 => '⦯', 2216 => '⦰', 2217 => '⦱', 2218 => '⦲', 2219 => '⦳', 2220 => '⦴', 2221 => '⦵', 2222 => '⦶', 2223 => '⦷', 2224 => '⦸', 2225 => '⦹', 2226 => '⦺', 2227 => '⦻', 2228 => '⦼', 2229 => '⦽', 2230 => '⦾', 2231 => '⦿', 2232 => '⧀', 2233 => '⧁', 2234 => '⧂', 2235 => '⧃', 2236 => '⧄', 2237 => '⧅', 2238 => '⧆', 2239 => '⧇', 2240 => '⧈', 2241 => '⧉', 2242 => '⧊', 2243 => '⧋', 2244 => '⧌', 2245 => '⧍', 2246 => '⧎', 2247 => '⧏', 2248 => '⧐', 2249 => '⧑', 2250 => '⧒', 2251 => '⧓', 2252 => '⧔', 2253 => '⧕', 2254 => '⧖', 2255 => '⧗', 2256 => '⧘', 2257 => '⧙', 2258 => '⧚', 2259 => '⧛', 2260 => '⧜', 2261 => '⧝', 2262 => '⧞', 2263 => '⧟', 2264 => '⧠', 2265 => '⧡', 2266 => '⧢', 2267 => '⧣', 2268 => '⧤', 2269 => '⧥', 2270 => '⧦', 2271 => '⧧', 2272 => '⧨', 2273 => '⧩', 2274 => '⧪', 2275 => '⧫', 2276 => '⧬', 2277 => '⧭', 2278 => '⧮', 2279 => '⧯', 2280 => '⧰', 2281 => '⧱', 2282 => '⧲', 2283 => '⧳', 2284 => '⧴', 2285 => '⧵', 2286 => '⧶', 2287 => '⧷', 2288 => '⧸', 2289 => '⧹', 2290 => '⧺', 2291 => '⧻', 2292 => '⧾', 2293 => '⧿', 2294 => '⨀', 2295 => '⨁', 2296 => '⨂', 2297 => '⨃', 2298 => '⨄', 2299 => '⨅', 2300 => '⨆', 2301 => '⨇', 2302 => '⨈', 2303 => '⨉', 2304 => '⨊', 2305 => '⨋', 2306 => '⨍', 2307 => '⨎', 2308 => '⨏', 2309 => '⨐', 2310 => '⨑', 2311 => '⨒', 2312 => '⨓', 2313 => '⨔', 2314 => '⨕', 2315 => '⨖', 2316 => '⨗', 2317 => '⨘', 2318 => '⨙', 2319 => '⨚', 2320 => '⨛', 2321 => '⨜', 2322 => '⨝', 2323 => '⨞', 2324 => '⨟', 2325 => '⨠', 2326 => '⨡', 2327 => '⨢', 2328 => '⨣', 2329 => '⨤', 2330 => '⨥', 2331 => '⨦', 2332 => '⨧', 2333 => '⨨', 2334 => '⨩', 2335 => '⨪', 2336 => '⨫', 2337 => '⨬', 2338 => '⨭', 2339 => '⨮', 2340 => '⨯', 2341 => '⨰', 2342 => '⨱', 2343 => '⨲', 2344 => '⨳', 2345 => '⨴', 2346 => '⨵', 2347 => '⨶', 2348 => '⨷', 2349 => '⨸', 2350 => '⨹', 2351 => '⨺', 2352 => '⨻', 2353 => '⨼', 2354 => '⨽', 2355 => '⨾', 2356 => '⨿', 2357 => '⩀', 2358 => '⩁', 2359 => '⩂', 2360 => '⩃', 2361 => '⩄', 2362 => '⩅', 2363 => '⩆', 2364 => '⩇', 2365 => '⩈', 2366 => '⩉', 2367 => '⩊', 2368 => '⩋', 2369 => '⩌', 2370 => '⩍', 2371 => '⩎', 2372 => '⩏', 2373 => '⩐', 2374 => '⩑', 2375 => '⩒', 2376 => '⩓', 2377 => '⩔', 2378 => '⩕', 2379 => '⩖', 2380 => '⩗', 2381 => '⩘', 2382 => '⩙', 2383 => '⩚', 2384 => '⩛', 2385 => '⩜', 2386 => '⩝', 2387 => '⩞', 2388 => '⩟', 2389 => '⩠', 2390 => '⩡', 2391 => '⩢', 2392 => '⩣', 2393 => '⩤', 2394 => '⩥', 2395 => '⩦', 2396 => '⩧', 2397 => '⩨', 2398 => '⩩', 2399 => '⩪', 2400 => '⩫', 2401 => '⩬', 2402 => '⩭', 2403 => '⩮', 2404 => '⩯', 2405 => '⩰', 2406 => '⩱', 2407 => '⩲', 2408 => '⩳', 2409 => '⩷', 2410 => '⩸', 2411 => '⩹', 2412 => '⩺', 2413 => '⩻', 2414 => '⩼', 2415 => '⩽', 2416 => '⩾', 2417 => '⩿', 2418 => '⪀', 2419 => '⪁', 2420 => '⪂', 2421 => '⪃', 2422 => '⪄', 2423 => '⪅', 2424 => '⪆', 2425 => '⪇', 2426 => '⪈', 2427 => '⪉', 2428 => '⪊', 2429 => '⪋', 2430 => '⪌', 2431 => '⪍', 2432 => '⪎', 2433 => '⪏', 2434 => '⪐', 2435 => '⪑', 2436 => '⪒', 2437 => '⪓', 2438 => '⪔', 2439 => '⪕', 2440 => '⪖', 2441 => '⪗', 2442 => '⪘', 2443 => '⪙', 2444 => '⪚', 2445 => '⪛', 2446 => '⪜', 2447 => '⪝', 2448 => '⪞', 2449 => '⪟', 2450 => '⪠', 2451 => '⪡', 2452 => '⪢', 2453 => '⪣', 2454 => '⪤', 2455 => '⪥', 2456 => '⪦', 2457 => '⪧', 2458 => '⪨', 2459 => '⪩', 2460 => '⪪', 2461 => '⪫', 2462 => '⪬', 2463 => '⪭', 2464 => '⪮', 2465 => '⪯', 2466 => '⪰', 2467 => '⪱', 2468 => '⪲', 2469 => '⪳', 2470 => '⪴', 2471 => '⪵', 2472 => '⪶', 2473 => '⪷', 2474 => '⪸', 2475 => '⪹', 2476 => '⪺', 2477 => '⪻', 2478 => '⪼', 2479 => '⪽', 2480 => '⪾', 2481 => '⪿', 2482 => '⫀', 2483 => '⫁', 2484 => '⫂', 2485 => '⫃', 2486 => '⫄', 2487 => '⫅', 2488 => '⫆', 2489 => '⫇', 2490 => '⫈', 2491 => '⫉', 2492 => '⫊', 2493 => '⫋', 2494 => '⫌', 2495 => '⫍', 2496 => '⫎', 2497 => '⫏', 2498 => '⫐', 2499 => '⫑', 2500 => '⫒', 2501 => '⫓', 2502 => '⫔', 2503 => '⫕', 2504 => '⫖', 2505 => '⫗', 2506 => '⫘', 2507 => '⫙', 2508 => '⫚', 2509 => '⫛', 2510 => '⫝', 2511 => '⫞', 2512 => '⫟', 2513 => '⫠', 2514 => '⫡', 2515 => '⫢', 2516 => '⫣', 2517 => '⫤', 2518 => '⫥', 2519 => '⫦', 2520 => '⫧', 2521 => '⫨', 2522 => '⫩', 2523 => '⫪', 2524 => '⫫', 2525 => '⫬', 2526 => '⫭', 2527 => '⫮', 2528 => '⫯', 2529 => '⫰', 2530 => '⫱', 2531 => '⫲', 2532 => '⫳', 2533 => '⫴', 2534 => '⫵', 2535 => '⫶', 2536 => '⫷', 2537 => '⫸', 2538 => '⫹', 2539 => '⫺', 2540 => '⫻', 2541 => '⫼', 2542 => '⫽', 2543 => '⫾', 2544 => '⫿', 2545 => '⬀', 2546 => '⬁', 2547 => '⬂', 2548 => '⬃', 2549 => '⬄', 2550 => '⬅', 2551 => '⬆', 2552 => '⬇', 2553 => '⬈', 2554 => '⬉', 2555 => '⬊', 2556 => '⬋', 2557 => '⬌', 2558 => '⬍', 2559 => '⬎', 2560 => '⬏', 2561 => '⬐', 2562 => '⬑', 2563 => '⬒', 2564 => '⬓', 2565 => '⬔', 2566 => '⬕', 2567 => '⬖', 2568 => '⬗', 2569 => '⬘', 2570 => '⬙', 2571 => '⬚', 2572 => '⬛', 2573 => '⬜', 2574 => '⬝', 2575 => '⬞', 2576 => '⬟', 2577 => '⬠', 2578 => '⬡', 2579 => '⬢', 2580 => '⬣', 2581 => '⬤', 2582 => '⬥', 2583 => '⬦', 2584 => '⬧', 2585 => '⬨', 2586 => '⬩', 2587 => '⬪', 2588 => '⬫', 2589 => '⬬', 2590 => '⬭', 2591 => '⬮', 2592 => '⬯', 2593 => '⬰', 2594 => '⬱', 2595 => '⬲', 2596 => '⬳', 2597 => '⬴', 2598 => '⬵', 2599 => '⬶', 2600 => '⬷', 2601 => '⬸', 2602 => '⬹', 2603 => '⬺', 2604 => '⬻', 2605 => '⬼', 2606 => '⬽', 2607 => '⬾', 2608 => '⬿', 2609 => '⭀', 2610 => '⭁', 2611 => '⭂', 2612 => '⭃', 2613 => '⭄', 2614 => '⭅', 2615 => '⭆', 2616 => '⭇', 2617 => '⭈', 2618 => '⭉', 2619 => '⭊', 2620 => '⭋', 2621 => '⭌', 2622 => '⭐', 2623 => '⭑', 2624 => '⭒', 2625 => '⭓', 2626 => '⭔', 2627 => '⭕', 2628 => '⭖', 2629 => '⭗', 2630 => '⭘', 2631 => '⭙', 2632 => '⳥', 2633 => '⳦', 2634 => '⳧', 2635 => '⳨', 2636 => '⳩', 2637 => '⳪', 2638 => '⠀', 2639 => '⠁', 2640 => '⠂', 2641 => '⠃', 2642 => '⠄', 2643 => '⠅', 2644 => '⠆', 2645 => '⠇', 2646 => '⠈', 2647 => '⠉', 2648 => '⠊', 2649 => '⠋', 2650 => '⠌', 2651 => '⠍', 2652 => '⠎', 2653 => '⠏', 2654 => '⠐', 2655 => '⠑', 2656 => '⠒', 2657 => '⠓', 2658 => '⠔', 2659 => '⠕', 2660 => '⠖', 2661 => '⠗', 2662 => '⠘', 2663 => '⠙', 2664 => '⠚', 2665 => '⠛', 2666 => '⠜', 2667 => '⠝', 2668 => '⠞', 2669 => '⠟', 2670 => '⠠', 2671 => '⠡', 2672 => '⠢', 2673 => '⠣', 2674 => '⠤', 2675 => '⠥', 2676 => '⠦', 2677 => '⠧', 2678 => '⠨', 2679 => '⠩', 2680 => '⠪', 2681 => '⠫', 2682 => '⠬', 2683 => '⠭', 2684 => '⠮', 2685 => '⠯', 2686 => '⠰', 2687 => '⠱', 2688 => '⠲', 2689 => '⠳', 2690 => '⠴', 2691 => '⠵', 2692 => '⠶', 2693 => '⠷', 2694 => '⠸', 2695 => '⠹', 2696 => '⠺', 2697 => '⠻', 2698 => '⠼', 2699 => '⠽', 2700 => '⠾', 2701 => '⠿', 2702 => '⡀', 2703 => '⡁', 2704 => '⡂', 2705 => '⡃', 2706 => '⡄', 2707 => '⡅', 2708 => '⡆', 2709 => '⡇', 2710 => '⡈', 2711 => '⡉', 2712 => '⡊', 2713 => '⡋', 2714 => '⡌', 2715 => '⡍', 2716 => '⡎', 2717 => '⡏', 2718 => '⡐', 2719 => '⡑', 2720 => '⡒', 2721 => '⡓', 2722 => '⡔', 2723 => '⡕', 2724 => '⡖', 2725 => '⡗', 2726 => '⡘', 2727 => '⡙', 2728 => '⡚', 2729 => '⡛', 2730 => '⡜', 2731 => '⡝', 2732 => '⡞', 2733 => '⡟', 2734 => '⡠', 2735 => '⡡', 2736 => '⡢', 2737 => '⡣', 2738 => '⡤', 2739 => '⡥', 2740 => '⡦', 2741 => '⡧', 2742 => '⡨', 2743 => '⡩', 2744 => '⡪', 2745 => '⡫', 2746 => '⡬', 2747 => '⡭', 2748 => '⡮', 2749 => '⡯', 2750 => '⡰', 2751 => '⡱', 2752 => '⡲', 2753 => '⡳', 2754 => '⡴', 2755 => '⡵', 2756 => '⡶', 2757 => '⡷', 2758 => '⡸', 2759 => '⡹', 2760 => '⡺', 2761 => '⡻', 2762 => '⡼', 2763 => '⡽', 2764 => '⡾', 2765 => '⡿', 2766 => '⢀', 2767 => '⢁', 2768 => '⢂', 2769 => '⢃', 2770 => '⢄', 2771 => '⢅', 2772 => '⢆', 2773 => '⢇', 2774 => '⢈', 2775 => '⢉', 2776 => '⢊', 2777 => '⢋', 2778 => '⢌', 2779 => '⢍', 2780 => '⢎', 2781 => '⢏', 2782 => '⢐', 2783 => '⢑', 2784 => '⢒', 2785 => '⢓', 2786 => '⢔', 2787 => '⢕', 2788 => '⢖', 2789 => '⢗', 2790 => '⢘', 2791 => '⢙', 2792 => '⢚', 2793 => '⢛', 2794 => '⢜', 2795 => '⢝', 2796 => '⢞', 2797 => '⢟', 2798 => '⢠', 2799 => '⢡', 2800 => '⢢', 2801 => '⢣', 2802 => '⢤', 2803 => '⢥', 2804 => '⢦', 2805 => '⢧', 2806 => '⢨', 2807 => '⢩', 2808 => '⢪', 2809 => '⢫', 2810 => '⢬', 2811 => '⢭', 2812 => '⢮', 2813 => '⢯', 2814 => '⢰', 2815 => '⢱', 2816 => '⢲', 2817 => '⢳', 2818 => '⢴', 2819 => '⢵', 2820 => '⢶', 2821 => '⢷', 2822 => '⢸', 2823 => '⢹', 2824 => '⢺', 2825 => '⢻', 2826 => '⢼', 2827 => '⢽', 2828 => '⢾', 2829 => '⢿', 2830 => '⣀', 2831 => '⣁', 2832 => '⣂', 2833 => '⣃', 2834 => '⣄', 2835 => '⣅', 2836 => '⣆', 2837 => '⣇', 2838 => '⣈', 2839 => '⣉', 2840 => '⣊', 2841 => '⣋', 2842 => '⣌', 2843 => '⣍', 2844 => '⣎', 2845 => '⣏', 2846 => '⣐', 2847 => '⣑', 2848 => '⣒', 2849 => '⣓', 2850 => '⣔', 2851 => '⣕', 2852 => '⣖', 2853 => '⣗', 2854 => '⣘', 2855 => '⣙', 2856 => '⣚', 2857 => '⣛', 2858 => '⣜', 2859 => '⣝', 2860 => '⣞', 2861 => '⣟', 2862 => '⣠', 2863 => '⣡', 2864 => '⣢', 2865 => '⣣', 2866 => '⣤', 2867 => '⣥', 2868 => '⣦', 2869 => '⣧', 2870 => '⣨', 2871 => '⣩', 2872 => '⣪', 2873 => '⣫', 2874 => '⣬', 2875 => '⣭', 2876 => '⣮', 2877 => '⣯', 2878 => '⣰', 2879 => '⣱', 2880 => '⣲', 2881 => '⣳', 2882 => '⣴', 2883 => '⣵', 2884 => '⣶', 2885 => '⣷', 2886 => '⣸', 2887 => '⣹', 2888 => '⣺', 2889 => '⣻', 2890 => '⣼', 2891 => '⣽', 2892 => '⣾', 2893 => '⣿', 2894 => '⚊', 2895 => '⚋', 2896 => '⚌', 2897 => '⚍', 2898 => '⚎', 2899 => '⚏', 2900 => '☰', 2901 => '☱', 2902 => '☲', 2903 => '☳', 2904 => '☴', 2905 => '☵', 2906 => '☶', 2907 => '☷', 2908 => '䷀', 2909 => '䷁', 2910 => '䷂', 2911 => '䷃', 2912 => '䷄', 2913 => '䷅', 2914 => '䷆', 2915 => '䷇', 2916 => '䷈', 2917 => '䷉', 2918 => '䷊', 2919 => '䷋', 2920 => '䷌', 2921 => '䷍', 2922 => '䷎', 2923 => '䷏', 2924 => '䷐', 2925 => '䷑', 2926 => '䷒', 2927 => '䷓', 2928 => '䷔', 2929 => '䷕', 2930 => '䷖', 2931 => '䷗', 2932 => '䷘', 2933 => '䷙', 2934 => '䷚', 2935 => '䷛', 2936 => '䷜', 2937 => '䷝', 2938 => '䷞', 2939 => '䷟', 2940 => '䷠', 2941 => '䷡', 2942 => '䷢', 2943 => '䷣', 2944 => '䷤', 2945 => '䷥', 2946 => '䷦', 2947 => '䷧', 2948 => '䷨', 2949 => '䷩', 2950 => '䷪', 2951 => '䷫', 2952 => '䷬', 2953 => '䷭', 2954 => '䷮', 2955 => '䷯', 2956 => '䷰', 2957 => '䷱', 2958 => '䷲', 2959 => '䷳', 2960 => '䷴', 2961 => '䷵', 2962 => '䷶', 2963 => '䷷', 2964 => '䷸', 2965 => '䷹', 2966 => '䷺', 2967 => '䷻', 2968 => '䷼', 2969 => '䷽', 2970 => '䷾', 2971 => '䷿', 2972 => '𝌀', 2973 => '𝌁', 2974 => '𝌂', 2975 => '𝌃', 2976 => '𝌄', 2977 => '𝌅', 2978 => '𝌆', 2979 => '𝌇', 2980 => '𝌈', 2981 => '𝌉', 2982 => '𝌊', 2983 => '𝌋', 2984 => '𝌌', 2985 => '𝌍', 2986 => '𝌎', 2987 => '𝌏', 2988 => '𝌐', 2989 => '𝌑', 2990 => '𝌒', 2991 => '𝌓', 2992 => '𝌔', 2993 => '𝌕', 2994 => '𝌖', 2995 => '𝌗', 2996 => '𝌘', 2997 => '𝌙', 2998 => '𝌚', 2999 => '𝌛', 3000 => '𝌜', 3001 => '𝌝', 3002 => '𝌞', 3003 => '𝌟', 3004 => '𝌠', 3005 => '𝌡', 3006 => '𝌢', 3007 => '𝌣', 3008 => '𝌤', 3009 => '𝌥', 3010 => '𝌦', 3011 => '𝌧', 3012 => '𝌨', 3013 => '𝌩', 3014 => '𝌪', 3015 => '𝌫', 3016 => '𝌬', 3017 => '𝌭', 3018 => '𝌮', 3019 => '𝌯', 3020 => '𝌰', 3021 => '𝌱', 3022 => '𝌲', 3023 => '𝌳', 3024 => '𝌴', 3025 => '𝌵', 3026 => '𝌶', 3027 => '𝌷', 3028 => '𝌸', 3029 => '𝌹', 3030 => '𝌺', 3031 => '𝌻', 3032 => '𝌼', 3033 => '𝌽', 3034 => '𝌾', 3035 => '𝌿', 3036 => '𝍀', 3037 => '𝍁', 3038 => '𝍂', 3039 => '𝍃', 3040 => '𝍄', 3041 => '𝍅', 3042 => '𝍆', 3043 => '𝍇', 3044 => '𝍈', 3045 => '𝍉', 3046 => '𝍊', 3047 => '𝍋', 3048 => '𝍌', 3049 => '𝍍', 3050 => '𝍎', 3051 => '𝍏', 3052 => '𝍐', 3053 => '𝍑', 3054 => '𝍒', 3055 => '𝍓', 3056 => '𝍔', 3057 => '𝍕', 3058 => '𝍖', 3059 => '꒐', 3060 => '꒑', 3061 => '꒒', 3062 => '꒓', 3063 => '꒔', 3064 => '꒕', 3065 => '꒖', 3066 => '꒗', 3067 => '꒘', 3068 => '꒙', 3069 => '꒚', 3070 => '꒛', 3071 => '꒜', 3072 => '꒝', 3073 => '꒞', 3074 => '꒟', 3075 => '꒠', 3076 => '꒡', 3077 => '꒢', 3078 => '꒣', 3079 => '꒤', 3080 => '꒥', 3081 => '꒦', 3082 => '꒧', 3083 => '꒨', 3084 => '꒩', 3085 => '꒪', 3086 => '꒫', 3087 => '꒬', 3088 => '꒭', 3089 => '꒮', 3090 => '꒯', 3091 => '꒰', 3092 => '꒱', 3093 => '꒲', 3094 => '꒳', 3095 => '꒴', 3096 => '꒵', 3097 => '꒶', 3098 => '꒷', 3099 => '꒸', 3100 => '꒹', 3101 => '꒺', 3102 => '꒻', 3103 => '꒼', 3104 => '꒽', 3105 => '꒾', 3106 => '꒿', 3107 => '꓀', 3108 => '꓁', 3109 => '꓂', 3110 => '꓃', 3111 => '꓄', 3112 => '꓅', 3113 => '꓆', 3114 => '𐄷', 3115 => '𐄸', 3116 => '𐄹', 3117 => '𐄺', 3118 => '𐄻', 3119 => '𐄼', 3120 => '𐄽', 3121 => '𐄾', 3122 => '𐄿', 3123 => '𐅹', 3124 => '𐅺', 3125 => '𐅻', 3126 => '𐅼', 3127 => '𐅽', 3128 => '𐅾', 3129 => '𐅿', 3130 => '𐆀', 3131 => '𐆁', 3132 => '𐆂', 3133 => '𐆃', 3134 => '𐆄', 3135 => '𐆅', 3136 => '𐆆', 3137 => '𐆇', 3138 => '𐆈', 3139 => '𐆉', 3140 => '𐆐', 3141 => '𐆑', 3142 => '𐆒', 3143 => '𐆓', 3144 => '𐆔', 3145 => '𐆕', 3146 => '𐆖', 3147 => '𐆗', 3148 => '𐆘', 3149 => '𐆙', 3150 => '𐆚', 3151 => '𐆛', 3152 => '𐇐', 3153 => '𐇑', 3154 => '𐇒', 3155 => '𐇓', 3156 => '𐇔', 3157 => '𐇕', 3158 => '𐇖', 3159 => '𐇗', 3160 => '𐇘', 3161 => '𐇙', 3162 => '𐇚', 3163 => '𐇛', 3164 => '𐇜', 3165 => '𐇝', 3166 => '𐇞', 3167 => '𐇟', 3168 => '𐇠', 3169 => '𐇡', 3170 => '𐇢', 3171 => '𐇣', 3172 => '𐇤', 3173 => '𐇥', 3174 => '𐇦', 3175 => '𐇧', 3176 => '𐇨', 3177 => '𐇩', 3178 => '𐇪', 3179 => '𐇫', 3180 => '𐇬', 3181 => '𐇭', 3182 => '𐇮', 3183 => '𐇯', 3184 => '𐇰', 3185 => '𐇱', 3186 => '𐇲', 3187 => '𐇳', 3188 => '𐇴', 3189 => '𐇵', 3190 => '𐇶', 3191 => '𐇷', 3192 => '𐇸', 3193 => '𐇹', 3194 => '𐇺', 3195 => '𐇻', 3196 => '𐇼', 3197 => '𝀀', 3198 => '𝀁', 3199 => '𝀂', 3200 => '𝀃', 3201 => '𝀄', 3202 => '𝀅', 3203 => '𝀆', 3204 => '𝀇', 3205 => '𝀈', 3206 => '𝀉', 3207 => '𝀊', 3208 => '𝀋', 3209 => '𝀌', 3210 => '𝀍', 3211 => '𝀎', 3212 => '𝀏', 3213 => '𝀐', 3214 => '𝀑', 3215 => '𝀒', 3216 => '𝀓', 3217 => '𝀔', 3218 => '𝀕', 3219 => '𝀖', 3220 => '𝀗', 3221 => '𝀘', 3222 => '𝀙', 3223 => '𝀚', 3224 => '𝀛', 3225 => '𝀜', 3226 => '𝀝', 3227 => '𝀞', 3228 => '𝀟', 3229 => '𝀠', 3230 => '𝀡', 3231 => '𝀢', 3232 => '𝀣', 3233 => '𝀤', 3234 => '𝀥', 3235 => '𝀦', 3236 => '𝀧', 3237 => '𝀨', 3238 => '𝀩', 3239 => '𝀪', 3240 => '𝀫', 3241 => '𝀬', 3242 => '𝀭', 3243 => '𝀮', 3244 => '𝀯', 3245 => '𝀰', 3246 => '𝀱', 3247 => '𝀲', 3248 => '𝀳', 3249 => '𝀴', 3250 => '𝀵', 3251 => '𝀶', 3252 => '𝀷', 3253 => '𝀸', 3254 => '𝀹', 3255 => '𝀺', 3256 => '𝀻', 3257 => '𝀼', 3258 => '𝀽', 3259 => '𝀾', 3260 => '𝀿', 3261 => '𝁀', 3262 => '𝁁', 3263 => '𝁂', 3264 => '𝁃', 3265 => '𝁄', 3266 => '𝁅', 3267 => '𝁆', 3268 => '𝁇', 3269 => '𝁈', 3270 => '𝁉', 3271 => '𝁊', 3272 => '𝁋', 3273 => '𝁌', 3274 => '𝁍', 3275 => '𝁎', 3276 => '𝁏', 3277 => '𝁐', 3278 => '𝁑', 3279 => '𝁒', 3280 => '𝁓', 3281 => '𝁔', 3282 => '𝁕', 3283 => '𝁖', 3284 => '𝁗', 3285 => '𝁘', 3286 => '𝁙', 3287 => '𝁚', 3288 => '𝁛', 3289 => '𝁜', 3290 => '𝁝', 3291 => '𝁞', 3292 => '𝁟', 3293 => '𝁠', 3294 => '𝁡', 3295 => '𝁢', 3296 => '𝁣', 3297 => '𝁤', 3298 => '𝁥', 3299 => '𝁦', 3300 => '𝁧', 3301 => '𝁨', 3302 => '𝁩', 3303 => '𝁪', 3304 => '𝁫', 3305 => '𝁬', 3306 => '𝁭', 3307 => '𝁮', 3308 => '𝁯', 3309 => '𝁰', 3310 => '𝁱', 3311 => '𝁲', 3312 => '𝁳', 3313 => '𝁴', 3314 => '𝁵', 3315 => '𝁶', 3316 => '𝁷', 3317 => '𝁸', 3318 => '𝁹', 3319 => '𝁺', 3320 => '𝁻', 3321 => '𝁼', 3322 => '𝁽', 3323 => '𝁾', 3324 => '𝁿', 3325 => '𝂀', 3326 => '𝂁', 3327 => '𝂂', 3328 => '𝂃', 3329 => '𝂄', 3330 => '𝂅', 3331 => '𝂆', 3332 => '𝂇', 3333 => '𝂈', 3334 => '𝂉', 3335 => '𝂊', 3336 => '𝂋', 3337 => '𝂌', 3338 => '𝂍', 3339 => '𝂎', 3340 => '𝂏', 3341 => '𝂐', 3342 => '𝂑', 3343 => '𝂒', 3344 => '𝂓', 3345 => '𝂔', 3346 => '𝂕', 3347 => '𝂖', 3348 => '𝂗', 3349 => '𝂘', 3350 => '𝂙', 3351 => '𝂚', 3352 => '𝂛', 3353 => '𝂜', 3354 => '𝂝', 3355 => '𝂞', 3356 => '𝂟', 3357 => '𝂠', 3358 => '𝂡', 3359 => '𝂢', 3360 => '𝂣', 3361 => '𝂤', 3362 => '𝂥', 3363 => '𝂦', 3364 => '𝂧', 3365 => '𝂨', 3366 => '𝂩', 3367 => '𝂪', 3368 => '𝂫', 3369 => '𝂬', 3370 => '𝂭', 3371 => '𝂮', 3372 => '𝂯', 3373 => '𝂰', 3374 => '𝂱', 3375 => '𝂲', 3376 => '𝂳', 3377 => '𝂴', 3378 => '𝂵', 3379 => '𝂶', 3380 => '𝂷', 3381 => '𝂸', 3382 => '𝂹', 3383 => '𝂺', 3384 => '𝂻', 3385 => '𝂼', 3386 => '𝂽', 3387 => '𝂾', 3388 => '𝂿', 3389 => '𝃀', 3390 => '𝃁', 3391 => '𝃂', 3392 => '𝃃', 3393 => '𝃄', 3394 => '𝃅', 3395 => '𝃆', 3396 => '𝃇', 3397 => '𝃈', 3398 => '𝃉', 3399 => '𝃊', 3400 => '𝃋', 3401 => '𝃌', 3402 => '𝃍', 3403 => '𝃎', 3404 => '𝃏', 3405 => '𝃐', 3406 => '𝃑', 3407 => '𝃒', 3408 => '𝃓', 3409 => '𝃔', 3410 => '𝃕', 3411 => '𝃖', 3412 => '𝃗', 3413 => '𝃘', 3414 => '𝃙', 3415 => '𝃚', 3416 => '𝃛', 3417 => '𝃜', 3418 => '𝃝', 3419 => '𝃞', 3420 => '𝃟', 3421 => '𝃠', 3422 => '𝃡', 3423 => '𝃢', 3424 => '𝃣', 3425 => '𝃤', 3426 => '𝃥', 3427 => '𝃦', 3428 => '𝃧', 3429 => '𝃨', 3430 => '𝃩', 3431 => '𝃪', 3432 => '𝃫', 3433 => '𝃬', 3434 => '𝃭', 3435 => '𝃮', 3436 => '𝃯', 3437 => '𝃰', 3438 => '𝃱', 3439 => '𝃲', 3440 => '𝃳', 3441 => '𝃴', 3442 => '𝃵', 3443 => '𝄀', 3444 => '𝄁', 3445 => '𝄂', 3446 => '𝄃', 3447 => '𝄄', 3448 => '𝄅', 3449 => '𝄆', 3450 => '𝄇', 3451 => '𝄈', 3452 => '𝄉', 3453 => '𝄊', 3454 => '𝄋', 3455 => '𝄌', 3456 => '𝄍', 3457 => '𝄎', 3458 => '𝄏', 3459 => '𝄐', 3460 => '𝄑', 3461 => '𝄒', 3462 => '𝄓', 3463 => '𝄔', 3464 => '𝄕', 3465 => '𝄖', 3466 => '𝄗', 3467 => '𝄘', 3468 => '𝄙', 3469 => '𝄚', 3470 => '𝄛', 3471 => '𝄜', 3472 => '𝄝', 3473 => '𝄞', 3474 => '𝄟', 3475 => '𝄠', 3476 => '𝄡', 3477 => '𝄢', 3478 => '𝄣', 3479 => '𝄤', 3480 => '𝄥', 3481 => '𝄦', 3482 => '♭', 3483 => '♮', 3484 => '♯', 3485 => '𝄪', 3486 => '𝄫', 3487 => '𝄬', 3488 => '𝄭', 3489 => '𝄮', 3490 => '𝄯', 3491 => '𝄰', 3492 => '𝄱', 3493 => '𝄲', 3494 => '𝄳', 3495 => '𝄴', 3496 => '𝄵', 3497 => '𝄶', 3498 => '𝄷', 3499 => '𝄸', 3500 => '𝄹', 3501 => '𝄩', 3502 => '𝄺', 3503 => '𝄻', 3504 => '𝄼', 3505 => '𝄽', 3506 => '𝄾', 3507 => '𝄿', 3508 => '𝅀', 3509 => '𝅁', 3510 => '𝅂', 3511 => '𝅃', 3512 => '𝅄', 3513 => '𝅅', 3514 => '𝅆', 3515 => '𝅇', 3516 => '𝅈', 3517 => '𝅉', 3518 => '𝅊', 3519 => '𝅋', 3520 => '𝅌', 3521 => '𝅍', 3522 => '𝅎', 3523 => '𝅏', 3524 => '𝅐', 3525 => '𝅑', 3526 => '𝅒', 3527 => '𝅓', 3528 => '𝅔', 3529 => '𝅕', 3530 => '𝅖', 3531 => '𝅗', 3532 => '𝅘', 3533 => '𝅙', 3534 => '𝅚', 3535 => '𝅛', 3536 => '𝅜', 3537 => '𝅝', 3538 => '𝅪', 3539 => '𝅫', 3540 => '𝅬', 3541 => '𝆃', 3542 => '𝆄', 3543 => '𝆌', 3544 => '𝆍', 3545 => '𝆎', 3546 => '𝆏', 3547 => '𝆐', 3548 => '𝆑', 3549 => '𝆒', 3550 => '𝆓', 3551 => '𝆔', 3552 => '𝆕', 3553 => '𝆖', 3554 => '𝆗', 3555 => '𝆘', 3556 => '𝆙', 3557 => '𝆚', 3558 => '𝆛', 3559 => '𝆜', 3560 => '𝆝', 3561 => '𝆞', 3562 => '𝆟', 3563 => '𝆠', 3564 => '𝆡', 3565 => '𝆢', 3566 => '𝆣', 3567 => '𝆤', 3568 => '𝆥', 3569 => '𝆦', 3570 => '𝆧', 3571 => '𝆨', 3572 => '𝆩', 3573 => '𝆮', 3574 => '𝆯', 3575 => '𝆰', 3576 => '𝆱', 3577 => '𝆲', 3578 => '𝆳', 3579 => '𝆴', 3580 => '𝆵', 3581 => '𝆶', 3582 => '𝆷', 3583 => '𝆸', 3584 => '𝆹', 3585 => '𝆺', 3586 => '𝇁', 3587 => '𝇂', 3588 => '𝇃', 3589 => '𝇄', 3590 => '𝇅', 3591 => '𝇆', 3592 => '𝇇', 3593 => '𝇈', 3594 => '𝇉', 3595 => '𝇊', 3596 => '𝇋', 3597 => '𝇌', 3598 => '𝇍', 3599 => '𝇎', 3600 => '𝇏', 3601 => '𝇐', 3602 => '𝇑', 3603 => '𝇒', 3604 => '𝇓', 3605 => '𝇔', 3606 => '𝇕', 3607 => '𝇖', 3608 => '𝇗', 3609 => '𝇘', 3610 => '𝇙', 3611 => '𝇚', 3612 => '𝇛', 3613 => '𝇜', 3614 => '𝇝', 3615 => '𝈀', 3616 => '𝈁', 3617 => '𝈂', 3618 => '𝈃', 3619 => '𝈄', 3620 => '𝈅', 3621 => '𝈆', 3622 => '𝈇', 3623 => '𝈈', 3624 => '𝈉', 3625 => '𝈊', 3626 => '𝈋', 3627 => '𝈌', 3628 => '𝈍', 3629 => '𝈎', 3630 => '𝈏', 3631 => '𝈐', 3632 => '𝈑', 3633 => '𝈒', 3634 => '𝈓', 3635 => '𝈔', 3636 => '𝈕', 3637 => '𝈖', 3638 => '𝈗', 3639 => '𝈘', 3640 => '𝈙', 3641 => '𝈚', 3642 => '𝈛', 3643 => '𝈜', 3644 => '𝈝', 3645 => '𝈞', 3646 => '𝈟', 3647 => '𝈠', 3648 => '𝈡', 3649 => '𝈢', 3650 => '𝈣', 3651 => '𝈤', 3652 => '𝈥', 3653 => '𝈦', 3654 => '𝈧', 3655 => '𝈨', 3656 => '𝈩', 3657 => '𝈪', 3658 => '𝈫', 3659 => '𝈬', 3660 => '𝈭', 3661 => '𝈮', 3662 => '𝈯', 3663 => '𝈰', 3664 => '𝈱', 3665 => '𝈲', 3666 => '𝈳', 3667 => '𝈴', 3668 => '𝈵', 3669 => '𝈶', 3670 => '𝈷', 3671 => '𝈸', 3672 => '𝈹', 3673 => '𝈺', 3674 => '𝈻', 3675 => '𝈼', 3676 => '𝈽', 3677 => '𝈾', 3678 => '𝈿', 3679 => '𝉀', 3680 => '𝉁', 3681 => '𝉅', 3682 => '🀀', 3683 => '🀁', 3684 => '🀂', 3685 => '🀃', 3686 => '🀄', 3687 => '🀅', 3688 => '🀆', 3689 => '🀇', 3690 => '🀈', 3691 => '🀉', 3692 => '🀊', 3693 => '🀋', 3694 => '🀌', 3695 => '🀍', 3696 => '🀎', 3697 => '🀏', 3698 => '🀐', 3699 => '🀑', 3700 => '🀒', 3701 => '🀓', 3702 => '🀔', 3703 => '🀕', 3704 => '🀖', 3705 => '🀗', 3706 => '🀘', 3707 => '🀙', 3708 => '🀚', 3709 => '🀛', 3710 => '🀜', 3711 => '🀝', 3712 => '🀞', 3713 => '🀟', 3714 => '🀠', 3715 => '🀡', 3716 => '🀢', 3717 => '🀣', 3718 => '🀤', 3719 => '🀥', 3720 => '🀦', 3721 => '🀧', 3722 => '🀨', 3723 => '🀩', 3724 => '🀪', 3725 => '🀫', 3726 => '🀰', 3727 => '🀱', 3728 => '🀲', 3729 => '🀳', 3730 => '🀴', 3731 => '🀵', 3732 => '🀶', 3733 => '🀷', 3734 => '🀸', 3735 => '🀹', 3736 => '🀺', 3737 => '🀻', 3738 => '🀼', 3739 => '🀽', 3740 => '🀾', 3741 => '🀿', 3742 => '🁀', 3743 => '🁁', 3744 => '🁂', 3745 => '🁃', 3746 => '🁄', 3747 => '🁅', 3748 => '🁆', 3749 => '🁇', 3750 => '🁈', 3751 => '🁉', 3752 => '🁊', 3753 => '🁋', 3754 => '🁌', 3755 => '🁍', 3756 => '🁎', 3757 => '🁏', 3758 => '🁐', 3759 => '🁑', 3760 => '🁒', 3761 => '🁓', 3762 => '🁔', 3763 => '🁕', 3764 => '🁖', 3765 => '🁗', 3766 => '🁘', 3767 => '🁙', 3768 => '🁚', 3769 => '🁛', 3770 => '🁜', 3771 => '🁝', 3772 => '🁞', 3773 => '🁟', 3774 => '🁠', 3775 => '🁡', 3776 => '🁢', 3777 => '🁣', 3778 => '🁤', 3779 => '🁥', 3780 => '🁦', 3781 => '🁧', 3782 => '🁨', 3783 => '🁩', 3784 => '🁪', 3785 => '🁫', 3786 => '🁬', 3787 => '🁭', 3788 => '🁮', 3789 => '🁯', 3790 => '🁰', 3791 => '🁱', 3792 => '🁲', 3793 => '🁳', 3794 => '🁴', 3795 => '🁵', 3796 => '🁶', 3797 => '🁷', 3798 => '🁸', 3799 => '🁹', 3800 => '🁺', 3801 => '🁻', 3802 => '🁼', 3803 => '🁽', 3804 => '🁾', 3805 => '🁿', 3806 => '🂀', 3807 => '🂁', 3808 => '🂂', 3809 => '🂃', 3810 => '🂄', 3811 => '🂅', 3812 => '🂆', 3813 => '🂇', 3814 => '🂈', 3815 => '🂉', 3816 => '🂊', 3817 => '🂋', 3818 => '🂌', 3819 => '🂍', 3820 => '🂎', 3821 => '🂏', 3822 => '🂐', 3823 => '🂑', 3824 => '🂒', 3825 => '🂓', 3826 => '🂠', 3827 => '🂡', 3828 => '🂢', 3829 => '🂣', 3830 => '🂤', 3831 => '🂥', 3832 => '🂦', 3833 => '🂧', 3834 => '🂨', 3835 => '🂩', 3836 => '🂪', 3837 => '🂫', 3838 => '🂬', 3839 => '🂭', 3840 => '🂮', 3841 => '🂱', 3842 => '🂲', 3843 => '🂳', 3844 => '🂴', 3845 => '🂵', 3846 => '🂶', 3847 => '🂷', 3848 => '🂸', 3849 => '🂹', 3850 => '🂺', 3851 => '🂻', 3852 => '🂼', 3853 => '🂽', 3854 => '🂾', 3855 => '🃁', 3856 => '🃂', 3857 => '🃃', 3858 => '🃄', 3859 => '🃅', 3860 => '🃆', 3861 => '🃇', 3862 => '🃈', 3863 => '🃉', 3864 => '🃊', 3865 => '🃋', 3866 => '🃌', 3867 => '🃍', 3868 => '🃎', 3869 => '🃏', 3870 => '🃑', 3871 => '🃒', 3872 => '🃓', 3873 => '🃔', 3874 => '🃕', 3875 => '🃖', 3876 => '🃗', 3877 => '🃘', 3878 => '🃙', 3879 => '🃚', 3880 => '🃛', 3881 => '🃜', 3882 => '🃝', 3883 => '🃞', 3884 => '🃟', 3885 => '🌀', 3886 => '🌁', 3887 => '🌂', 3888 => '🌃', 3889 => '🌄', 3890 => '🌅', 3891 => '🌆', 3892 => '🌇', 3893 => '🌈', 3894 => '🌉', 3895 => '🌊', 3896 => '🌋', 3897 => '🌌', 3898 => '🌍', 3899 => '🌎', 3900 => '🌏', 3901 => '🌐', 3902 => '🌑', 3903 => '🌒', 3904 => '🌓', 3905 => '🌔', 3906 => '🌕', 3907 => '🌖', 3908 => '🌗', 3909 => '🌘', 3910 => '🌙', 3911 => '🌚', 3912 => '🌛', 3913 => '🌜', 3914 => '🌝', 3915 => '🌞', 3916 => '🌟', 3917 => '🌠', 3918 => '🌰', 3919 => '🌱', 3920 => '🌲', 3921 => '🌳', 3922 => '🌴', 3923 => '🌵', 3924 => '🌷', 3925 => '🌸', 3926 => '🌹', 3927 => '🌺', 3928 => '🌻', 3929 => '🌼', 3930 => '🌽', 3931 => '🌾', 3932 => '🌿', 3933 => '🍀', 3934 => '🍁', 3935 => '🍂', 3936 => '🍃', 3937 => '🍄', 3938 => '🍅', 3939 => '🍆', 3940 => '🍇', 3941 => '🍈', 3942 => '🍉', 3943 => '🍊', 3944 => '🍋', 3945 => '🍌', 3946 => '🍍', 3947 => '🍎', 3948 => '🍏', 3949 => '🍐', 3950 => '🍑', 3951 => '🍒', 3952 => '🍓', 3953 => '🍔', 3954 => '🍕', 3955 => '🍖', 3956 => '🍗', 3957 => '🍘', 3958 => '🍙', 3959 => '🍚', 3960 => '🍛', 3961 => '🍜', 3962 => '🍝', 3963 => '🍞', 3964 => '🍟', 3965 => '🍠', 3966 => '🍡', 3967 => '🍢', 3968 => '🍣', 3969 => '🍤', 3970 => '🍥', 3971 => '🍦', 3972 => '🍧', 3973 => '🍨', 3974 => '🍩', 3975 => '🍪', 3976 => '🍫', 3977 => '🍬', 3978 => '🍭', 3979 => '🍮', 3980 => '🍯', 3981 => '🍰', 3982 => '🍱', 3983 => '🍲', 3984 => '🍳', 3985 => '🍴', 3986 => '🍵', 3987 => '🍶', 3988 => '🍷', 3989 => '🍸', 3990 => '🍹', 3991 => '🍺', 3992 => '🍻', 3993 => '🍼', 3994 => '🎀', 3995 => '🎁', 3996 => '🎂', 3997 => '🎃', 3998 => '🎄', 3999 => '🎅', 4000 => '🎆', 4001 => '🎇', 4002 => '🎈', 4003 => '🎉', 4004 => '🎊', 4005 => '🎋', 4006 => '🎌', 4007 => '🎍', 4008 => '🎎', 4009 => '🎏', 4010 => '🎐', 4011 => '🎑', 4012 => '🎒', 4013 => '🎓', 4014 => '🎠', 4015 => '🎡', 4016 => '🎢', 4017 => '🎣', 4018 => '🎤', 4019 => '🎥', 4020 => '🎦', 4021 => '🎧', 4022 => '🎨', 4023 => '🎩', 4024 => '🎪', 4025 => '🎫', 4026 => '🎬', 4027 => '🎭', 4028 => '🎮', 4029 => '🎯', 4030 => '🎰', 4031 => '🎱', 4032 => '🎲', 4033 => '🎳', 4034 => '🎴', 4035 => '🎵', 4036 => '🎶', 4037 => '🎷', 4038 => '🎸', 4039 => '🎹', 4040 => '🎺', 4041 => '🎻', 4042 => '🎼', 4043 => '🎽', 4044 => '🎾', 4045 => '🎿', 4046 => '🏀', 4047 => '🏁', 4048 => '🏂', 4049 => '🏃', 4050 => '🏄', 4051 => '🏆', 4052 => '🏇', 4053 => '🏈', 4054 => '🏉', 4055 => '🏊', 4056 => '🏠', 4057 => '🏡', 4058 => '🏢', 4059 => '🏣', 4060 => '🏤', 4061 => '🏥', 4062 => '🏦', 4063 => '🏧', 4064 => '🏨', 4065 => '🏩', 4066 => '🏪', 4067 => '🏫', 4068 => '🏬', 4069 => '🏭', 4070 => '🏮', 4071 => '🏯', 4072 => '🏰', 4073 => '🐀', 4074 => '🐁', 4075 => '🐂', 4076 => '🐃', 4077 => '🐄', 4078 => '🐅', 4079 => '🐆', 4080 => '🐇', 4081 => '🐈', 4082 => '🐉', 4083 => '🐊', 4084 => '🐋', 4085 => '🐌', 4086 => '🐍', 4087 => '🐎', 4088 => '🐏', 4089 => '🐐', 4090 => '🐑', 4091 => '🐒', 4092 => '🐓', 4093 => '🐔', 4094 => '🐕', 4095 => '🐖', 4096 => '🐗', 4097 => '🐘', 4098 => '🐙', 4099 => '🐚', 4100 => '🐛', 4101 => '🐜', 4102 => '🐝', 4103 => '🐞', 4104 => '🐟', 4105 => '🐠', 4106 => '🐡', 4107 => '🐢', 4108 => '🐣', 4109 => '🐤', 4110 => '🐥', 4111 => '🐦', 4112 => '🐧', 4113 => '🐨', 4114 => '🐩', 4115 => '🐪', 4116 => '🐫', 4117 => '🐬', 4118 => '🐭', 4119 => '🐮', 4120 => '🐯', 4121 => '🐰', 4122 => '🐱', 4123 => '🐲', 4124 => '🐳', 4125 => '🐴', 4126 => '🐵', 4127 => '🐶', 4128 => '🐷', 4129 => '🐸', 4130 => '🐹', 4131 => '🐺', 4132 => '🐻', 4133 => '🐼', 4134 => '🐽', 4135 => '🐾', 4136 => '👀', 4137 => '👂', 4138 => '👃', 4139 => '👄', 4140 => '👅', 4141 => '👆', 4142 => '👇', 4143 => '👈', 4144 => '👉', 4145 => '👊', 4146 => '👋', 4147 => '👌', 4148 => '👍', 4149 => '👎', 4150 => '👏', 4151 => '👐', 4152 => '👑', 4153 => '👒', 4154 => '👓', 4155 => '👔', 4156 => '👕', 4157 => '👖', 4158 => '👗', 4159 => '👘', 4160 => '👙', 4161 => '👚', 4162 => '👛', 4163 => '👜', 4164 => '👝', 4165 => '👞', 4166 => '👟', 4167 => '👠', 4168 => '👡', 4169 => '👢', 4170 => '👣', 4171 => '👤', 4172 => '👥', 4173 => '👦', 4174 => '👧', 4175 => '👨', 4176 => '👩', 4177 => '👪', 4178 => '👫', 4179 => '👬', 4180 => '👭', 4181 => '👮', 4182 => '👯', 4183 => '👰', 4184 => '👱', 4185 => '👲', 4186 => '👳', 4187 => '👴', 4188 => '👵', 4189 => '👶', 4190 => '👷', 4191 => '👸', 4192 => '👹', 4193 => '👺', 4194 => '👻', 4195 => '👼', 4196 => '👽', 4197 => '👾', 4198 => '👿', 4199 => '💀', 4200 => '💁', 4201 => '💂', 4202 => '💃', 4203 => '💄', 4204 => '💅', 4205 => '💆', 4206 => '💇', 4207 => '💈', 4208 => '💉', 4209 => '💊', 4210 => '💋', 4211 => '💌', 4212 => '💍', 4213 => '💎', 4214 => '💏', 4215 => '💐', 4216 => '💑', 4217 => '💒', 4218 => '💓', 4219 => '💔', 4220 => '💕', 4221 => '💖', 4222 => '💗', 4223 => '💘', 4224 => '💙', 4225 => '💚', 4226 => '💛', 4227 => '💜', 4228 => '💝', 4229 => '💞', 4230 => '💟', 4231 => '💠', 4232 => '💡', 4233 => '💢', 4234 => '💣', 4235 => '💤', 4236 => '💥', 4237 => '💦', 4238 => '💧', 4239 => '💨', 4240 => '💩', 4241 => '💪', 4242 => '💫', 4243 => '💬', 4244 => '💭', 4245 => '💮', 4246 => '💯', 4247 => '💰', 4248 => '💱', 4249 => '💲', 4250 => '💳', 4251 => '💴', 4252 => '💵', 4253 => '💶', 4254 => '💷', 4255 => '💸', 4256 => '💹', 4257 => '💺', 4258 => '💻', 4259 => '💼', 4260 => '💽', 4261 => '💾', 4262 => '💿', 4263 => '📀', 4264 => '📁', 4265 => '📂', 4266 => '📃', 4267 => '📄', 4268 => '📅', 4269 => '📆', 4270 => '📇', 4271 => '📈', 4272 => '📉', 4273 => '📊', 4274 => '📋', 4275 => '📌', 4276 => '📍', 4277 => '📎', 4278 => '📏', 4279 => '📐', 4280 => '📑', 4281 => '📒', 4282 => '📓', 4283 => '📔', 4284 => '📕', 4285 => '📖', 4286 => '📗', 4287 => '📘', 4288 => '📙', 4289 => '📚', 4290 => '📛', 4291 => '📜', 4292 => '📝', 4293 => '📞', 4294 => '📟', 4295 => '📠', 4296 => '📡', 4297 => '📢', 4298 => '📣', 4299 => '📤', 4300 => '📥', 4301 => '📦', 4302 => '📧', 4303 => '📨', 4304 => '📩', 4305 => '📪', 4306 => '📫', 4307 => '📬', 4308 => '📭', 4309 => '📮', 4310 => '📯', 4311 => '📰', 4312 => '📱', 4313 => '📲', 4314 => '📳', 4315 => '📴', 4316 => '📵', 4317 => '📶', 4318 => '📷', 4319 => '📹', 4320 => '📺', 4321 => '📻', 4322 => '📼', 4323 => '🔀', 4324 => '🔁', 4325 => '🔂', 4326 => '🔃', 4327 => '🔄', 4328 => '🔅', 4329 => '🔆', 4330 => '🔇', 4331 => '🔈', 4332 => '🔉', 4333 => '🔊', 4334 => '🔋', 4335 => '🔌', 4336 => '🔍', 4337 => '🔎', 4338 => '🔏', 4339 => '🔐', 4340 => '🔑', 4341 => '🔒', 4342 => '🔓', 4343 => '🔔', 4344 => '🔕', 4345 => '🔖', 4346 => '🔗', 4347 => '🔘', 4348 => '🔙', 4349 => '🔚', 4350 => '🔛', 4351 => '🔜', 4352 => '🔝', 4353 => '🔞', 4354 => '🔟', 4355 => '🔠', 4356 => '🔡', 4357 => '🔢', 4358 => '🔣', 4359 => '🔤', 4360 => '🔥', 4361 => '🔦', 4362 => '🔧', 4363 => '🔨', 4364 => '🔩', 4365 => '🔪', 4366 => '🔫', 4367 => '🔬', 4368 => '🔭', 4369 => '🔮', 4370 => '🔯', 4371 => '🔰', 4372 => '🔱', 4373 => '🔲', 4374 => '🔳', 4375 => '🔴', 4376 => '🔵', 4377 => '🔶', 4378 => '🔷', 4379 => '🔸', 4380 => '🔹', 4381 => '🔺', 4382 => '🔻', 4383 => '🔼', 4384 => '🔽', 4385 => '🕐', 4386 => '🕑', 4387 => '🕒', 4388 => '🕓', 4389 => '🕔', 4390 => '🕕', 4391 => '🕖', 4392 => '🕗', 4393 => '🕘', 4394 => '🕙', 4395 => '🕚', 4396 => '🕛', 4397 => '🕜', 4398 => '🕝', 4399 => '🕞', 4400 => '🕟', 4401 => '🕠', 4402 => '🕡', 4403 => '🕢', 4404 => '🕣', 4405 => '🕤', 4406 => '🕥', 4407 => '🕦', 4408 => '🕧', 4409 => '🗻', 4410 => '🗼', 4411 => '🗽', 4412 => '🗾', 4413 => '🗿', 4414 => '😁', 4415 => '😂', 4416 => '😃', 4417 => '😄', 4418 => '😅', 4419 => '😆', 4420 => '😇', 4421 => '😈', 4422 => '😉', 4423 => '😊', 4424 => '😋', 4425 => '😌', 4426 => '😍', 4427 => '😎', 4428 => '😏', 4429 => '😐', 4430 => '😒', 4431 => '😓', 4432 => '😔', 4433 => '😖', 4434 => '😘', 4435 => '😚', 4436 => '😜', 4437 => '😝', 4438 => '😞', 4439 => '😠', 4440 => '😡', 4441 => '😢', 4442 => '😣', 4443 => '😤', 4444 => '😥', 4445 => '😨', 4446 => '😩', 4447 => '😪', 4448 => '😫', 4449 => '😭', 4450 => '😰', 4451 => '😱', 4452 => '😲', 4453 => '😳', 4454 => '😵', 4455 => '😶', 4456 => '😷', 4457 => '😸', 4458 => '😹', 4459 => '😺', 4460 => '😻', 4461 => '😼', 4462 => '😽', 4463 => '😾', 4464 => '😿', 4465 => '🙀', 4466 => '🙅', 4467 => '🙆', 4468 => '🙇', 4469 => '🙈', 4470 => '🙉', 4471 => '🙊', 4472 => '🙋', 4473 => '🙌', 4474 => '🙍', 4475 => '🙎', 4476 => '🙏', 4477 => '🚀', 4478 => '🚁', 4479 => '🚂', 4480 => '🚃', 4481 => '🚄', 4482 => '🚅', 4483 => '🚆', 4484 => '🚇', 4485 => '🚈', 4486 => '🚉', 4487 => '🚊', 4488 => '🚋', 4489 => '🚌', 4490 => '🚍', 4491 => '🚎', 4492 => '🚏', 4493 => '🚐', 4494 => '🚑', 4495 => '🚒', 4496 => '🚓', 4497 => '🚔', 4498 => '🚕', 4499 => '🚖', 4500 => '🚗', 4501 => '🚘', 4502 => '🚙', 4503 => '🚚', 4504 => '🚛', 4505 => '🚜', 4506 => '🚝', 4507 => '🚞', 4508 => '🚟', 4509 => '🚠', 4510 => '🚡', 4511 => '🚢', 4512 => '🚣', 4513 => '🚤', 4514 => '🚥', 4515 => '🚦', 4516 => '🚧', 4517 => '🚨', 4518 => '🚩', 4519 => '🚪', 4520 => '🚫', 4521 => '🚬', 4522 => '🚭', 4523 => '🚮', 4524 => '🚯', 4525 => '🚰', 4526 => '🚱', 4527 => '🚲', 4528 => '🚳', 4529 => '🚴', 4530 => '🚵', 4531 => '🚶', 4532 => '🚷', 4533 => '🚸', 4534 => '🚹', 4535 => '🚺', 4536 => '🚻', 4537 => '🚼', 4538 => '🚽', 4539 => '🚾', 4540 => '🚿', 4541 => '🛀', 4542 => '🛁', 4543 => '🛂', 4544 => '🛃', 4545 => '🛄', 4546 => '🛅', 4547 => '🜀', 4548 => '🜁', 4549 => '🜂', 4550 => '🜃', 4551 => '🜄', 4552 => '🜅', 4553 => '🜆', 4554 => '🜇', 4555 => '🜈', 4556 => '🜉', 4557 => '🜊', 4558 => '🜋', 4559 => '🜌', 4560 => '🜍', 4561 => '🜎', 4562 => '🜏', 4563 => '🜐', 4564 => '🜑', 4565 => '🜒', 4566 => '🜓', 4567 => '🜔', 4568 => '🜕', 4569 => '🜖', 4570 => '🜗', 4571 => '🜘', 4572 => '🜙', 4573 => '🜚', 4574 => '🜛', 4575 => '🜜', 4576 => '🜝', 4577 => '🜞', 4578 => '🜟', 4579 => '🜠', 4580 => '🜡', 4581 => '🜢', 4582 => '🜣', 4583 => '🜤', 4584 => '🜥', 4585 => '🜦', 4586 => '🜧', 4587 => '🜨', 4588 => '🜩', 4589 => '🜪', 4590 => '🜫', 4591 => '🜬', 4592 => '🜭', 4593 => '🜮', 4594 => '🜯', 4595 => '🜰', 4596 => '🜱', 4597 => '🜲', 4598 => '🜳', 4599 => '🜴', 4600 => '🜵', 4601 => '🜶', 4602 => '🜷', 4603 => '🜸', 4604 => '🜹', 4605 => '🜺', 4606 => '🜻', 4607 => '🜼', 4608 => '🜽', 4609 => '🜾', 4610 => '🜿', 4611 => '🝀', 4612 => '🝁', 4613 => '🝂', 4614 => '🝃', 4615 => '🝄', 4616 => '🝅', 4617 => '🝆', 4618 => '🝇', 4619 => '🝈', 4620 => '🝉', 4621 => '🝊', 4622 => '🝋', 4623 => '🝌', 4624 => '🝍', 4625 => '🝎', 4626 => '🝏', 4627 => '🝐', 4628 => '🝑', 4629 => '🝒', 4630 => '🝓', 4631 => '🝔', 4632 => '🝕', 4633 => '🝖', 4634 => '🝗', 4635 => '🝘', 4636 => '🝙', 4637 => '🝚', 4638 => '🝛', 4639 => '🝜', 4640 => '🝝', 4641 => '🝞', 4642 => '🝟', 4643 => '🝠', 4644 => '🝡', 4645 => '🝢', 4646 => '🝣', 4647 => '🝤', 4648 => '🝥', 4649 => '🝦', 4650 => '🝧', 4651 => '🝨', 4652 => '🝩', 4653 => '🝪', 4654 => '🝫', 4655 => '🝬', 4656 => '🝭', 4657 => '🝮', 4658 => '🝯', 4659 => '🝰', 4660 => '🝱', 4661 => '🝲', 4662 => '🝳', 4663 => '㆐', 4664 => '㆑', 4665 => '', 4666 => '�', 4667 => '৴', 4668 => '৵', 4669 => '৶', 4670 => '৷', 4671 => '৸', 4672 => '৹', 4673 => '୲', 4674 => '୳', 4675 => '୴', 4676 => '୵', 4677 => '୶', 4678 => '୷', 4679 => '꠰', 4680 => '꠱', 4681 => '꠲', 4682 => '꠳', 4683 => '꠴', 4684 => '꠵', 4685 => '௰', 4686 => '௱', 4687 => '௲', 4688 => '൰', 4689 => '൱', 4690 => '൲', 4691 => '൳', 4692 => '൴', 4693 => '൵', 4694 => '፲', 4695 => '፳', 4696 => '፴', 4697 => '፵', 4698 => '፶', 4699 => '፷', 4700 => '፸', 4701 => '፹', 4702 => '፺', 4703 => '፻', 4704 => '፼', 4705 => 'ↀ', 4706 => 'ↁ', 4707 => 'ↂ', 4708 => 'ↆ', 4709 => 'ↇ', 4710 => 'ↈ', 4711 => '𐹩', 4712 => '𐹪', 4713 => '𐹫', 4714 => '𐹬', 4715 => '𐹭', 4716 => '𐹮', 4717 => '𐹯', 4718 => '𐹰', 4719 => '𐹱', 4720 => '𐹲', 4721 => '𐹳', 4722 => '𐹴', 4723 => '𐹵', 4724 => '𐹶', 4725 => '𐹷', 4726 => '𐹸', 4727 => '𐹹', 4728 => '𐹺', 4729 => '𐹻', 4730 => '𐹼', 4731 => '𐹽', 4732 => '𐹾', 4733 => '⳽', 4734 => '𐌢', 4735 => '𐌣', 4736 => '𐄐', 4737 => '𐄑', 4738 => '𐄒', 4739 => '𐄓', 4740 => '𐄔', 4741 => '𐄕', 4742 => '𐄖', 4743 => '𐄗', 4744 => '𐄘', 4745 => '𐄙', 4746 => '𐄚', 4747 => '𐄛', 4748 => '𐄜', 4749 => '𐄝', 4750 => '𐄞', 4751 => '𐄟', 4752 => '𐄠', 4753 => '𐄡', 4754 => '𐄢', 4755 => '𐄣', 4756 => '𐄤', 4757 => '𐄥', 4758 => '𐄦', 4759 => '𐄧', 4760 => '𐄨', 4761 => '𐄩', 4762 => '𐄪', 4763 => '𐄫', 4764 => '𐄬', 4765 => '𐄭', 4766 => '𐄮', 4767 => '𐄯', 4768 => '𐄰', 4769 => '𐄱', 4770 => '𐄲', 4771 => '𐄳', 4772 => '𐅀', 4773 => '𐅁', 4774 => '𐅄', 4775 => '𐅅', 4776 => '𐅆', 4777 => '𐅇', 4778 => '𐅉', 4779 => '𐅊', 4780 => '𐅋', 4781 => '𐅌', 4782 => '𐅍', 4783 => '𐅎', 4784 => '𐅐', 4785 => '𐅑', 4786 => '𐅒', 4787 => '𐅓', 4788 => '𐅔', 4789 => '𐅕', 4790 => '𐅖', 4791 => '𐅗', 4792 => '𐅠', 4793 => '𐅡', 4794 => '𐅢', 4795 => '𐅣', 4796 => '𐅤', 4797 => '𐅥', 4798 => '𐅦', 4799 => '𐅧', 4800 => '𐅨', 4801 => '𐅩', 4802 => '𐅪', 4803 => '𐅫', 4804 => '𐅬', 4805 => '𐅭', 4806 => '𐅮', 4807 => '𐅯', 4808 => '𐅰', 4809 => '𐅱', 4810 => '𐅲', 4811 => '𐅴', 4812 => '𐅵', 4813 => '𐅶', 4814 => '𐅷', 4815 => '𐅸', 4816 => '𐏓', 4817 => '𐏔', 4818 => '𐏕', 4819 => '𐩾', 4820 => '𐩿', 4821 => '𐤗', 4822 => '𐤘', 4823 => '𐤙', 4824 => '𐡛', 4825 => '𐡜', 4826 => '𐡝', 4827 => '𐡞', 4828 => '𐡟', 4829 => '𐭜', 4830 => '𐭝', 4831 => '𐭞', 4832 => '𐭟', 4833 => '𐭼', 4834 => '𐭽', 4835 => '𐭾', 4836 => '𐭿', 4837 => '𑁛', 4838 => '𑁜', 4839 => '𑁝', 4840 => '𑁞', 4841 => '𑁟', 4842 => '𑁠', 4843 => '𑁡', 4844 => '𑁢', 4845 => '𑁣', 4846 => '𑁤', 4847 => '𑁥', 4848 => '𐩄', 4849 => '𐩅', 4850 => '𐩆', 4851 => '𐩇', 4852 => '𒐲', 4853 => '𒐳', 4854 => '𒑖', 4855 => '𒑗', 4856 => '𒑚', 4857 => '𒑛', 4858 => '𒑜', 4859 => '𒑝', 4860 => '𒑞', 4861 => '𒑟', 4862 => '𒑠', 4863 => '𒑡', 4864 => '𒑢', 4865 => '𝍩', 4866 => '𝍪', 4867 => '𝍫', 4868 => '𝍬', 4869 => '𝍭', 4870 => '𝍮', 4871 => '𝍯', 4872 => '𝍰', 4873 => '𝍱', 4874 => 'ː', 4875 => 'ˑ', 4876 => 'ॱ', 4877 => 'ๆ', 4878 => 'ໆ', 4879 => 'ᪧ', 4880 => 'ꧏ', 4881 => 'ꩰ', 4882 => 'ꫝ', 4883 => 'ゝ', 4884 => 'ー', 4885 => 'ヽ', 4886 => '¤', 4887 => '¢', 4888 => '$', 4889 => '£', 4890 => '¥', 4891 => '؋', 4892 => '৲', 4893 => '৳', 4894 => '৻', 4895 => '૱', 4896 => '꠸', 4897 => '௹', 4898 => '฿', 4899 => '៛', 4900 => '₠', 4901 => '₡', 4902 => '₢', 4903 => '₣', 4904 => '₤', 4905 => '₥', 4906 => '₦', 4907 => '₧', 4908 => '₩', 4909 => '₪', 4910 => '₫', 4911 => '€', 4912 => '₭', 4913 => '₮', 4914 => '₯', 4915 => '₰', 4916 => '₱', 4917 => '₲', 4918 => '₳', 4919 => '₴', 4920 => '₵', 4921 => '₶', 4922 => '₷', 4923 => '₸', 4924 => '₹', 4925 => '0', 4926 => '1', 4927 => '2', 4928 => '3', 4929 => '4', 4930 => '5', 4931 => '6', 4932 => '7', 4933 => '8', 4934 => '9', 4935 => 'A', 4936 => 'ᴀ', 4937 => 'Ⱥ', 4938 => 'ᶏ', 4939 => 'ᴁ', 4940 => 'ᴂ', 4941 => 'Ɐ', 4942 => 'Ɑ', 4943 => 'ᶐ', 4944 => 'Ɒ', 4945 => 'B', 4946 => 'ʙ', 4947 => 'Ƀ', 4948 => 'ᴯ', 4949 => 'ᴃ', 4950 => 'ᵬ', 4951 => 'ᶀ', 4952 => 'Ɓ', 4953 => 'Ƃ', 4954 => 'C', 4955 => 'ᴄ', 4956 => 'Ȼ', 4957 => 'Ƈ', 4958 => 'ɕ', 4959 => 'Ↄ', 4960 => 'Ꜿ', 4961 => 'D', 4962 => 'ᴅ', 4963 => 'ᴆ', 4964 => 'ᵭ', 4965 => 'ᶁ', 4966 => 'Ɖ', 4967 => 'Ɗ', 4968 => 'ᶑ', 4969 => 'Ƌ', 4970 => 'ȡ', 4971 => 'ꝱ', 4972 => 'ẟ', 4973 => 'E', 4974 => 'ᴇ', 4975 => 'Ɇ', 4976 => 'ᶒ', 4977 => 'ⱸ', 4978 => 'Ǝ', 4979 => 'ⱻ', 4980 => 'Ə', 4981 => 'ᶕ', 4982 => 'Ɛ', 4983 => 'ᶓ', 4984 => 'ɘ', 4985 => 'ɚ', 4986 => 'ɜ', 4987 => 'ᶔ', 4988 => 'ᴈ', 4989 => 'ɝ', 4990 => 'ɞ', 4991 => 'ʚ', 4992 => 'ɤ', 4993 => 'F', 4994 => 'ꜰ', 4995 => 'ᵮ', 4996 => 'ᶂ', 4997 => 'Ƒ', 4998 => 'Ⅎ', 4999 => 'ꟻ', 5000 => 'G', 5001 => 'ɡ', 5002 => 'ɢ', 5003 => 'Ǥ', 5004 => 'ᶃ', 5005 => 'Ɠ', 5006 => 'ʛ', 5007 => 'ᵷ', 5008 => 'Ꝿ', 5009 => 'Ɣ', 5010 => 'Ƣ', 5011 => 'H', 5012 => 'ʜ', 5013 => 'Ƕ', 5014 => 'ɦ', 5015 => 'Ⱨ', 5016 => 'Ⱶ', 5017 => 'Ꜧ', 5018 => 'ɧ', 5019 => 'ʻ', 5020 => 'ʽ', 5021 => 'I', 5022 => 'ı', 5023 => 'ɪ', 5024 => 'ꟾ', 5025 => 'ᴉ', 5026 => 'Ɨ', 5027 => 'ᵻ', 5028 => 'ᶖ', 5029 => 'Ɩ', 5030 => 'ᵼ', 5031 => 'J', 5032 => 'ȷ', 5033 => 'ᴊ', 5034 => 'Ɉ', 5035 => 'ʝ', 5036 => 'ɟ', 5037 => 'ʄ', 5038 => 'K', 5039 => 'ᴋ', 5040 => 'ᶄ', 5041 => 'Ƙ', 5042 => 'Ⱪ', 5043 => 'Ꝁ', 5044 => 'Ꝃ', 5045 => 'Ꝅ', 5046 => 'ʞ', 5047 => 'L', 5048 => 'ʟ', 5049 => 'Ꝇ', 5050 => 'ᴌ', 5051 => 'Ꝉ', 5052 => 'Ƚ', 5053 => 'Ⱡ', 5054 => 'Ɫ', 5055 => 'ɬ', 5056 => 'ᶅ', 5057 => 'ɭ', 5058 => 'ꞎ', 5059 => 'ȴ', 5060 => 'ꝲ', 5061 => 'ɮ', 5062 => 'Ꞁ', 5063 => 'ƛ', 5064 => 'ʎ', 5065 => 'M', 5066 => 'ᴍ', 5067 => 'ᵯ', 5068 => 'ᶆ', 5069 => 'Ɱ', 5070 => 'ꟽ', 5071 => 'ꟿ', 5072 => 'ꝳ', 5073 => 'N', 5074 => 'ɴ', 5075 => 'ᴻ', 5076 => 'ᴎ', 5077 => 'ᵰ', 5078 => 'Ɲ', 5079 => 'Ƞ', 5080 => 'Ꞑ', 5081 => 'ᶇ', 5082 => 'ɳ', 5083 => 'ȵ', 5084 => 'ꝴ', 5085 => 'Ŋ', 5086 => 'O', 5087 => 'ᴏ', 5088 => 'ᴑ', 5089 => 'ɶ', 5090 => 'ᴔ', 5091 => 'ᴓ', 5092 => 'Ɔ', 5093 => 'ᴐ', 5094 => 'ᴒ', 5095 => 'ᶗ', 5096 => 'Ꝍ', 5097 => 'ᴖ', 5098 => 'ᴗ', 5099 => 'ⱺ', 5100 => 'Ɵ', 5101 => 'Ꝋ', 5102 => 'ɷ', 5103 => 'Ȣ', 5104 => 'ᴕ', 5105 => 'P', 5106 => 'ᴘ', 5107 => 'Ᵽ', 5108 => 'Ꝑ', 5109 => 'ᵱ', 5110 => 'ᶈ', 5111 => 'Ƥ', 5112 => 'Ꝓ', 5113 => 'Ꝕ', 5114 => 'ꟼ', 5115 => 'ɸ', 5116 => 'ⱷ', 5117 => 'Q', 5118 => 'Ꝗ', 5119 => 'Ꝙ', 5120 => 'ʠ', 5121 => 'Ɋ', 5122 => 'ĸ', 5123 => 'R', 5124 => 'Ʀ', 5125 => 'Ꝛ', 5126 => 'ᴙ', 5127 => 'Ɍ', 5128 => 'ᵲ', 5129 => 'ɹ', 5130 => 'ᴚ', 5131 => 'ɺ', 5132 => 'ᶉ', 5133 => 'ɻ', 5134 => 'ⱹ', 5135 => 'ɼ', 5136 => 'Ɽ', 5137 => 'ɾ', 5138 => 'ᵳ', 5139 => 'ɿ', 5140 => 'ʁ', 5141 => 'ꝵ', 5142 => 'ꝶ', 5143 => 'Ꝝ', 5144 => 'S', 5145 => 'ꜱ', 5146 => 'ᵴ', 5147 => 'ᶊ', 5148 => 'ʂ', 5149 => 'Ȿ', 5150 => 'ẜ', 5151 => 'ẝ', 5152 => 'Ʃ', 5153 => 'ᶋ', 5154 => 'ƪ', 5155 => 'ʅ', 5156 => 'ᶘ', 5157 => 'ʆ', 5158 => 'T', 5159 => 'ᴛ', 5160 => 'Ŧ', 5161 => 'Ⱦ', 5162 => 'ᵵ', 5163 => 'ƫ', 5164 => 'Ƭ', 5165 => 'Ʈ', 5166 => 'ȶ', 5167 => 'ꝷ', 5168 => 'ʇ', 5169 => 'U', 5170 => 'ᴜ', 5171 => 'ᴝ', 5172 => 'ᴞ', 5173 => 'ᵫ', 5174 => 'Ʉ', 5175 => 'ᵾ', 5176 => 'ᶙ', 5177 => 'Ɥ', 5178 => 'ʮ', 5179 => 'ʯ', 5180 => 'Ɯ', 5181 => 'ꟺ', 5182 => 'ᴟ', 5183 => 'ɰ', 5184 => 'Ʊ', 5185 => 'ᵿ', 5186 => 'V', 5187 => 'ᴠ', 5188 => 'Ꝟ', 5189 => 'ᶌ', 5190 => 'Ʋ', 5191 => 'ⱱ', 5192 => 'ⱴ', 5193 => 'Ỽ', 5194 => 'Ʌ', 5195 => 'W', 5196 => 'ᴡ', 5197 => 'Ⱳ', 5198 => 'ʍ', 5199 => 'X', 5200 => 'ᶍ', 5201 => 'Y', 5202 => 'ʏ', 5203 => 'Ɏ', 5204 => 'Ƴ', 5205 => 'Ỿ', 5206 => 'Z', 5207 => 'ᴢ', 5208 => 'Ƶ', 5209 => 'ᵶ', 5210 => 'ᶎ', 5211 => 'Ȥ', 5212 => 'ʐ', 5213 => 'ʑ', 5214 => 'Ɀ', 5215 => 'Ⱬ', 5216 => 'Ꝣ', 5217 => 'Ʒ', 5218 => 'ᴣ', 5219 => 'Ƹ', 5220 => 'ᶚ', 5221 => 'ƺ', 5222 => 'ʓ', 5223 => 'Ȝ', 5224 => 'Þ', 5225 => 'Ꝥ', 5226 => 'Ꝧ', 5227 => 'Ƿ', 5228 => 'Ꝩ', 5229 => 'Ꝫ', 5230 => 'Ꝭ', 5231 => 'Ꝯ', 5232 => 'ꝸ', 5233 => 'ƻ', 5234 => 'Ꜫ', 5235 => 'Ꜭ', 5236 => 'Ꜯ', 5237 => 'Ƨ', 5238 => 'Ƽ', 5239 => 'Ƅ', 5240 => 'ʔ', 5241 => 'Ɂ', 5242 => 'ˀ', 5243 => 'ʼ', 5244 => 'ˮ', 5245 => 'ʾ', 5246 => 'Ꜣ', 5247 => 'Ꞌ', 5248 => 'ʕ', 5249 => 'ʿ', 5250 => 'ˁ', 5251 => 'ᴤ', 5252 => 'ᴥ', 5253 => 'Ꜥ', 5254 => 'ʡ', 5255 => 'ʢ', 5256 => 'ʖ', 5257 => 'ǀ', 5258 => 'ǁ', 5259 => 'ǂ', 5260 => 'ǃ', 5261 => 'ʗ', 5262 => 'ʘ', 5263 => 'ʬ', 5264 => 'ʭ', 5265 => 'Α', 5266 => 'Β', 5267 => 'Γ', 5268 => 'ᴦ', 5269 => 'Δ', 5270 => 'Ε', 5271 => 'Ϝ', 5272 => 'Ͷ', 5273 => 'Ϛ', 5274 => 'Ζ', 5275 => 'Ͱ', 5276 => 'Η', 5277 => 'Θ', 5278 => 'Ι', 5279 => 'ϳ', 5280 => 'Κ', 5281 => 'Λ', 5282 => 'ᴧ', 5283 => 'Μ', 5284 => 'Ν', 5285 => 'Ξ', 5286 => 'Ο', 5287 => 'Π', 5288 => 'ᴨ', 5289 => 'Ϻ', 5290 => 'Ϟ', 5291 => 'Ϙ', 5292 => 'Ρ', 5293 => 'ᴩ', 5294 => 'ϼ', 5295 => 'Σ', 5296 => 'Ͼ', 5297 => 'Ͻ', 5298 => 'Ͽ', 5299 => 'Τ', 5300 => 'Υ', 5301 => 'Φ', 5302 => 'Χ', 5303 => 'Ψ', 5304 => 'ᴪ', 5305 => 'Ω', 5306 => 'Ϡ', 5307 => 'Ͳ', 5308 => 'Ϸ', 5309 => 'Ⲁ', 5310 => 'Ⲃ', 5311 => 'Ⲅ', 5312 => 'Ⲇ', 5313 => 'Ⲉ', 5314 => 'Ⲷ', 5315 => 'Ⲋ', 5316 => 'Ⲍ', 5317 => 'Ⲏ', 5318 => 'Ⲑ', 5319 => 'Ⲓ', 5320 => 'Ⲕ', 5321 => 'Ⲹ', 5322 => 'Ⲗ', 5323 => 'Ⲙ', 5324 => 'Ⲛ', 5325 => 'Ⲻ', 5326 => 'Ⲽ', 5327 => 'Ⲝ', 5328 => 'Ⲟ', 5329 => 'Ⲡ', 5330 => 'Ⲣ', 5331 => 'Ⲥ', 5332 => 'Ⲧ', 5333 => 'Ⲩ', 5334 => 'Ⲫ', 5335 => 'Ⲭ', 5336 => 'Ⲯ', 5337 => 'Ⲱ', 5338 => 'Ⲿ', 5339 => 'Ⳁ', 5340 => 'Ϣ', 5341 => 'Ⳬ', 5342 => 'Ⳃ', 5343 => 'Ⳅ', 5344 => 'Ⳇ', 5345 => 'Ϥ', 5346 => 'Ϧ', 5347 => 'Ⳉ', 5348 => 'Ϩ', 5349 => 'Ⳋ', 5350 => 'Ⳍ', 5351 => 'Ⳏ', 5352 => 'Ⳑ', 5353 => 'Ⳓ', 5354 => 'Ⳕ', 5355 => 'Ϫ', 5356 => 'Ⳮ', 5357 => 'Ⳗ', 5358 => 'Ϭ', 5359 => 'Ⳙ', 5360 => 'Ⳛ', 5361 => 'Ⳝ', 5362 => 'Ϯ', 5363 => 'Ⲳ', 5364 => 'Ⲵ', 5365 => 'Ⳟ', 5366 => 'Ⳡ', 5367 => 'Ⳣ', 5368 => 'А', 5369 => 'Ӑ', 5370 => 'Ӓ', 5371 => 'Ә', 5372 => 'Ӛ', 5373 => 'Ӕ', 5374 => 'Б', 5375 => 'В', 5376 => 'Г', 5377 => 'Ғ', 5378 => 'Ӻ', 5379 => 'Ҕ', 5380 => 'Ӷ', 5381 => 'Д', 5382 => 'Ԁ', 5383 => 'Ꚁ', 5384 => 'Ђ', 5385 => 'Ꙣ', 5386 => 'Ԃ', 5387 => 'Ѓ', 5388 => 'Ҙ', 5389 => 'Е', 5390 => 'Ӗ', 5391 => 'Є', 5392 => 'Ж', 5393 => 'Ꚅ', 5394 => 'Ӝ', 5395 => 'Җ', 5396 => 'З', 5397 => 'Ꙁ', 5398 => 'Ԅ', 5399 => 'Ԑ', 5400 => 'Ӟ', 5401 => 'Ꙃ', 5402 => 'Ѕ', 5403 => 'Ꙅ', 5404 => 'Ӡ', 5405 => 'Ꚉ', 5406 => 'Ԇ', 5407 => 'Ꚃ', 5408 => 'И', 5409 => 'Ҋ', 5410 => 'Ӥ', 5411 => 'І', 5412 => 'Ꙇ', 5413 => 'Ї', 5414 => 'Й', 5415 => 'Ј', 5416 => 'Ꙉ', 5417 => 'К', 5418 => 'Қ', 5419 => 'Ӄ', 5420 => 'Ҡ', 5421 => 'Ҟ', 5422 => 'Ҝ', 5423 => 'Ԟ', 5424 => 'Ԛ', 5425 => 'Л', 5426 => 'ᴫ', 5427 => 'Ӆ', 5428 => 'Ԓ', 5429 => 'Ԡ', 5430 => 'Љ', 5431 => 'Ꙥ', 5432 => 'Ԉ', 5433 => 'Ԕ', 5434 => 'М', 5435 => 'Ӎ', 5436 => 'Ꙧ', 5437 => 'Н', 5438 => 'Ӊ', 5439 => 'Ң', 5440 => 'Ӈ', 5441 => 'Ԣ', 5442 => 'Ҥ', 5443 => 'Њ', 5444 => 'Ԋ', 5445 => 'О', 5446 => 'Ӧ', 5447 => 'Ө', 5448 => 'Ӫ', 5449 => 'П', 5450 => 'Ԥ', 5451 => 'Ҧ', 5452 => 'Ҁ', 5453 => 'Р', 5454 => 'Ҏ', 5455 => 'Ԗ', 5456 => 'С', 5457 => 'Ԍ', 5458 => 'Ҫ', 5459 => 'Т', 5460 => 'Ꚍ', 5461 => 'Ԏ', 5462 => 'Ҭ', 5463 => 'Ꚋ', 5464 => 'Ћ', 5465 => 'Ќ', 5466 => 'У', 5467 => 'Ў', 5468 => 'Ӱ', 5469 => 'Ӳ', 5470 => 'Ү', 5471 => 'Ұ', 5472 => 'Ꙋ', 5473 => 'Ѹ', 5474 => 'Ф', 5475 => 'Х', 5476 => 'Ӽ', 5477 => 'Ӿ', 5478 => 'Ҳ', 5479 => 'Һ', 5480 => 'Ԧ', 5481 => 'Ꚕ', 5482 => 'Ѡ', 5483 => 'Ѿ', 5484 => 'Ꙍ', 5485 => 'Ѽ', 5486 => 'Ѻ', 5487 => 'Ц', 5488 => 'Ꙡ', 5489 => 'Ꚏ', 5490 => 'Ҵ', 5491 => 'Ꚑ', 5492 => 'Ч', 5493 => 'Ꚓ', 5494 => 'Ӵ', 5495 => 'Ҷ', 5496 => 'Ӌ', 5497 => 'Ҹ', 5498 => 'Ꚇ', 5499 => 'Ҽ', 5500 => 'Ҿ', 5501 => 'Џ', 5502 => 'Ш', 5503 => 'Ꚗ', 5504 => 'Щ', 5505 => 'Ꙏ', 5506 => 'ⸯ', 5507 => 'ꙿ', 5508 => 'Ъ', 5509 => 'Ꙑ', 5510 => 'Ы', 5511 => 'Ӹ', 5512 => 'Ь', 5513 => 'Ҍ', 5514 => 'Ѣ', 5515 => 'Ꙓ', 5516 => 'Э', 5517 => 'Ӭ', 5518 => 'Ю', 5519 => 'Ꙕ', 5520 => 'Ꙗ', 5521 => 'Я', 5522 => 'Ԙ', 5523 => 'Ѥ', 5524 => 'Ѧ', 5525 => 'Ꙙ', 5526 => 'Ѫ', 5527 => 'Ꙛ', 5528 => 'Ѩ', 5529 => 'Ꙝ', 5530 => 'Ѭ', 5531 => 'Ѯ', 5532 => 'Ѱ', 5533 => 'Ѳ', 5534 => 'Ѵ', 5535 => 'Ѷ', 5536 => 'Ꙟ', 5537 => 'Ҩ', 5538 => 'Ԝ', 5539 => 'Ӏ', 5540 => 'Ⰰ', 5541 => 'Ⰱ', 5542 => 'Ⰲ', 5543 => 'Ⰳ', 5544 => 'Ⰴ', 5545 => 'Ⰵ', 5546 => 'Ⰶ', 5547 => 'Ⰷ', 5548 => 'Ⰸ', 5549 => 'Ⰹ', 5550 => 'Ⰺ', 5551 => 'Ⰻ', 5552 => 'Ⰼ', 5553 => 'Ⰽ', 5554 => 'Ⰾ', 5555 => 'Ⰿ', 5556 => 'Ⱀ', 5557 => 'Ⱁ', 5558 => 'Ⱂ', 5559 => 'Ⱃ', 5560 => 'Ⱄ', 5561 => 'Ⱅ', 5562 => 'Ⱆ', 5563 => 'Ⱇ', 5564 => 'Ⱈ', 5565 => 'Ⱉ', 5566 => 'Ⱊ', 5567 => 'Ⱋ', 5568 => 'Ⱌ', 5569 => 'Ⱍ', 5570 => 'Ⱎ', 5571 => 'Ⱏ', 5572 => 'Ⱐ', 5573 => 'Ⱑ', 5574 => 'Ⱒ', 5575 => 'Ⱓ', 5576 => 'Ⱔ', 5577 => 'Ⱕ', 5578 => 'Ⱖ', 5579 => 'Ⱗ', 5580 => 'Ⱘ', 5581 => 'Ⱙ', 5582 => 'Ⱚ', 5583 => 'Ⱛ', 5584 => 'Ⱜ', 5585 => 'Ⱝ', 5586 => 'Ⱞ', 5587 => 'ა', 5588 => 'Ⴀ', 5589 => 'ბ', 5590 => 'Ⴁ', 5591 => 'გ', 5592 => 'Ⴂ', 5593 => 'დ', 5594 => 'Ⴃ', 5595 => 'ე', 5596 => 'Ⴄ', 5597 => 'ვ', 5598 => 'Ⴅ', 5599 => 'ზ', 5600 => 'Ⴆ', 5601 => 'ჱ', 5602 => 'Ⴡ', 5603 => 'თ', 5604 => 'Ⴇ', 5605 => 'ი', 5606 => 'Ⴈ', 5607 => 'კ', 5608 => 'Ⴉ', 5609 => 'ლ', 5610 => 'Ⴊ', 5611 => 'მ', 5612 => 'Ⴋ', 5613 => 'ნ', 5614 => 'Ⴌ', 5615 => 'ჲ', 5616 => 'Ⴢ', 5617 => 'ო', 5618 => 'Ⴍ', 5619 => 'პ', 5620 => 'Ⴎ', 5621 => 'ჟ', 5622 => 'Ⴏ', 5623 => 'რ', 5624 => 'Ⴐ', 5625 => 'ს', 5626 => 'Ⴑ', 5627 => 'ტ', 5628 => 'Ⴒ', 5629 => 'ჳ', 5630 => 'Ⴣ', 5631 => 'უ', 5632 => 'Ⴓ', 5633 => 'ფ', 5634 => 'Ⴔ', 5635 => 'ქ', 5636 => 'Ⴕ', 5637 => 'ღ', 5638 => 'Ⴖ', 5639 => 'ყ', 5640 => 'Ⴗ', 5641 => 'შ', 5642 => 'Ⴘ', 5643 => 'ჩ', 5644 => 'Ⴙ', 5645 => 'ც', 5646 => 'Ⴚ', 5647 => 'ძ', 5648 => 'Ⴛ', 5649 => 'წ', 5650 => 'Ⴜ', 5651 => 'ჭ', 5652 => 'Ⴝ', 5653 => 'ხ', 5654 => 'Ⴞ', 5655 => 'ჴ', 5656 => 'Ⴤ', 5657 => 'ჯ', 5658 => 'Ⴟ', 5659 => 'ჰ', 5660 => 'Ⴠ', 5661 => 'ჵ', 5662 => 'Ⴥ', 5663 => 'ჶ', 5664 => 'ჷ', 5665 => 'ჸ', 5666 => 'ჹ', 5667 => 'ჺ', 5668 => 'Ա', 5669 => 'Բ', 5670 => 'Գ', 5671 => 'Դ', 5672 => 'Ե', 5673 => 'Զ', 5674 => 'Է', 5675 => 'Ը', 5676 => 'Թ', 5677 => 'Ժ', 5678 => 'Ի', 5679 => 'Լ', 5680 => 'Խ', 5681 => 'Ծ', 5682 => 'Կ', 5683 => 'Հ', 5684 => 'Ձ', 5685 => 'Ղ', 5686 => 'Ճ', 5687 => 'Մ', 5688 => 'Յ', 5689 => 'Ն', 5690 => 'Շ', 5691 => 'Ո', 5692 => 'Չ', 5693 => 'Պ', 5694 => 'Ջ', 5695 => 'Ռ', 5696 => 'Ս', 5697 => 'Վ', 5698 => 'Տ', 5699 => 'Ր', 5700 => 'Ց', 5701 => 'Ւ', 5702 => 'Փ', 5703 => 'Ք', 5704 => 'Օ', 5705 => 'Ֆ', 5706 => 'ՙ', 5707 => 'א', 5708 => 'ב', 5709 => 'ג', 5710 => 'ד', 5711 => 'ה', 5712 => 'ו', 5713 => 'ז', 5714 => 'ח', 5715 => 'ט', 5716 => 'י', 5717 => 'ך', 5718 => 'ל', 5719 => 'ם', 5720 => 'ן', 5721 => 'ס', 5722 => 'ע', 5723 => 'ף', 5724 => 'ץ', 5725 => 'ק', 5726 => 'ר', 5727 => 'ש', 5728 => 'ת', 5729 => '𐤀', 5730 => '𐤁', 5731 => '𐤂', 5732 => '𐤃', 5733 => '𐤄', 5734 => '𐤅', 5735 => '𐤆', 5736 => '𐤇', 5737 => '𐤈', 5738 => '𐤉', 5739 => '𐤊', 5740 => '𐤋', 5741 => '𐤌', 5742 => '𐤍', 5743 => '𐤎', 5744 => '𐤏', 5745 => '𐤐', 5746 => '𐤑', 5747 => '𐤒', 5748 => '𐤓', 5749 => '𐤔', 5750 => '𐤕', 5751 => 'ࠀ', 5752 => 'ࠁ', 5753 => 'ࠂ', 5754 => 'ࠃ', 5755 => 'ࠄ', 5756 => 'ࠅ', 5757 => 'ࠆ', 5758 => 'ࠇ', 5759 => 'ࠈ', 5760 => 'ࠉ', 5761 => 'ࠊ', 5762 => 'ࠋ', 5763 => 'ࠌ', 5764 => 'ࠍ', 5765 => 'ࠎ', 5766 => 'ࠏ', 5767 => 'ࠐ', 5768 => 'ࠑ', 5769 => 'ࠒ', 5770 => 'ࠓ', 5771 => 'ࠔ', 5772 => 'ࠕ', 5773 => 'ࠚ', 5774 => 'ء', 5775 => 'آ', 5776 => 'أ', 5777 => 'ٲ', 5778 => 'ٱ', 5779 => 'ؤ', 5780 => 'إ', 5781 => 'ٳ', 5782 => 'ݳ', 5783 => 'ݴ', 5784 => 'ئ', 5785 => 'ا', 5786 => 'ٮ', 5787 => 'ب', 5788 => 'ٻ', 5789 => 'پ', 5790 => 'ڀ', 5791 => 'ݐ', 5792 => 'ݑ', 5793 => 'ݒ', 5794 => 'ݓ', 5795 => 'ݔ', 5796 => 'ݕ', 5797 => 'ݖ', 5798 => 'ة', 5799 => 'ت', 5800 => 'ث', 5801 => 'ٹ', 5802 => 'ٺ', 5803 => 'ټ', 5804 => 'ٽ', 5805 => 'ٿ', 5806 => 'ج', 5807 => 'ڃ', 5808 => 'ڄ', 5809 => 'چ', 5810 => 'ڿ', 5811 => 'ڇ', 5812 => 'ح', 5813 => 'خ', 5814 => 'ځ', 5815 => 'ڂ', 5816 => 'څ', 5817 => 'ݗ', 5818 => 'ݘ', 5819 => 'ݮ', 5820 => 'ݯ', 5821 => 'ݲ', 5822 => 'ݼ', 5823 => 'د', 5824 => 'ذ', 5825 => 'ڈ', 5826 => 'ډ', 5827 => 'ڊ', 5828 => 'ڋ', 5829 => 'ڌ', 5830 => 'ڍ', 5831 => 'ڎ', 5832 => 'ڏ', 5833 => 'ڐ', 5834 => 'ۮ', 5835 => 'ݙ', 5836 => 'ݚ', 5837 => 'ر', 5838 => 'ز', 5839 => 'ڑ', 5840 => 'ڒ', 5841 => 'ړ', 5842 => 'ڔ', 5843 => 'ڕ', 5844 => 'ږ', 5845 => 'ڗ', 5846 => 'ژ', 5847 => 'ڙ', 5848 => 'ۯ', 5849 => 'ݛ', 5850 => 'ݫ', 5851 => 'ݬ', 5852 => 'ݱ', 5853 => 'س', 5854 => 'ش', 5855 => 'ښ', 5856 => 'ڛ', 5857 => 'ڜ', 5858 => 'ۺ', 5859 => 'ݜ', 5860 => 'ݭ', 5861 => 'ݰ', 5862 => 'ݽ', 5863 => 'ݾ', 5864 => 'ص', 5865 => 'ض', 5866 => 'ڝ', 5867 => 'ڞ', 5868 => 'ۻ', 5869 => 'ط', 5870 => 'ظ', 5871 => 'ڟ', 5872 => 'ع', 5873 => 'غ', 5874 => 'ڠ', 5875 => 'ۼ', 5876 => 'ݝ', 5877 => 'ݞ', 5878 => 'ݟ', 5879 => 'ف', 5880 => 'ڡ', 5881 => 'ڢ', 5882 => 'ڣ', 5883 => 'ڤ', 5884 => 'ڥ', 5885 => 'ڦ', 5886 => 'ݠ', 5887 => 'ݡ', 5888 => 'ٯ', 5889 => 'ق', 5890 => 'ڧ', 5891 => 'ڨ', 5892 => 'ك', 5893 => 'ک', 5894 => 'ڪ', 5895 => 'ګ', 5896 => 'ڬ', 5897 => 'ݿ', 5898 => 'ڭ', 5899 => 'ڮ', 5900 => 'گ', 5901 => 'ڰ', 5902 => 'ڱ', 5903 => 'ڲ', 5904 => 'ڳ', 5905 => 'ڴ', 5906 => 'ݢ', 5907 => 'ػ', 5908 => 'ؼ', 5909 => 'ݣ', 5910 => 'ݤ', 5911 => 'ل', 5912 => 'ڵ', 5913 => 'ڶ', 5914 => 'ڷ', 5915 => 'ڸ', 5916 => 'ݪ', 5917 => 'م', 5918 => 'ݥ', 5919 => 'ݦ', 5920 => 'ن', 5921 => 'ں', 5922 => 'ڻ', 5923 => 'ڼ', 5924 => 'ڽ', 5925 => 'ڹ', 5926 => 'ݧ', 5927 => 'ݨ', 5928 => 'ݩ', 5929 => 'ه', 5930 => 'ھ', 5931 => 'ہ', 5932 => 'ۃ', 5933 => 'ۿ', 5934 => 'ە', 5935 => 'و', 5936 => 'ۄ', 5937 => 'ۅ', 5938 => 'ۆ', 5939 => 'ۇ', 5940 => 'ۈ', 5941 => 'ۉ', 5942 => 'ۊ', 5943 => 'ۋ', 5944 => 'ۏ', 5945 => 'ݸ', 5946 => 'ݹ', 5947 => 'ى', 5948 => 'ي', 5949 => 'ی', 5950 => 'ۍ', 5951 => 'ێ', 5952 => 'ې', 5953 => 'ۑ', 5954 => 'ؽ', 5955 => 'ؾ', 5956 => 'ؿ', 5957 => 'ؠ', 5958 => 'ݵ', 5959 => 'ݶ', 5960 => 'ݷ', 5961 => 'ے', 5962 => 'ݺ', 5963 => 'ݻ', 5964 => 'ܐ', 5965 => 'ܒ', 5966 => 'ܓ', 5967 => 'ܖ', 5968 => 'ܕ', 5969 => 'ܗ', 5970 => 'ܘ', 5971 => 'ܙ', 5972 => 'ݍ', 5973 => 'ܚ', 5974 => 'ܛ', 5975 => 'ܝ', 5976 => 'ܞ', 5977 => 'ܟ', 5978 => 'ݎ', 5979 => 'ܠ', 5980 => 'ܡ', 5981 => 'ܢ', 5982 => 'ܣ', 5983 => 'ܥ', 5984 => 'ܦ', 5985 => 'ݏ', 5986 => 'ܨ', 5987 => 'ܩ', 5988 => 'ܪ', 5989 => 'ܫ', 5990 => 'ܬ', 5991 => 'ࡀ', 5992 => 'ࡁ', 5993 => 'ࡂ', 5994 => 'ࡃ', 5995 => 'ࡄ', 5996 => 'ࡅ', 5997 => 'ࡆ', 5998 => 'ࡇ', 5999 => 'ࡈ', 6000 => 'ࡉ', 6001 => 'ࡊ', 6002 => 'ࡋ', 6003 => 'ࡌ', 6004 => 'ࡍ', 6005 => 'ࡎ', 6006 => 'ࡏ', 6007 => 'ࡐ', 6008 => 'ࡑ', 6009 => 'ࡒ', 6010 => 'ࡓ', 6011 => 'ࡔ', 6012 => 'ࡕ', 6013 => 'ࡖ', 6014 => 'ࡗ', 6015 => 'ࡘ', 6016 => 'ހ', 6017 => 'ޙ', 6018 => 'ޚ', 6019 => 'ށ', 6020 => 'ނ', 6021 => 'ރ', 6022 => 'ޜ', 6023 => 'ބ', 6024 => 'ޅ', 6025 => 'ކ', 6026 => 'އ', 6027 => 'ޢ', 6028 => 'ޣ', 6029 => 'ވ', 6030 => 'ޥ', 6031 => 'މ', 6032 => 'ފ', 6033 => 'ދ', 6034 => 'ޛ', 6035 => 'ތ', 6036 => 'ޘ', 6037 => 'ޠ', 6038 => 'ޡ', 6039 => 'ލ', 6040 => 'ގ', 6041 => 'ޤ', 6042 => 'ޏ', 6043 => 'ސ', 6044 => 'ޝ', 6045 => 'ޞ', 6046 => 'ޟ', 6047 => 'ޑ', 6048 => 'ޒ', 6049 => 'ޓ', 6050 => 'ޔ', 6051 => 'ޕ', 6052 => 'ޖ', 6053 => 'ޗ', 6054 => 'ޱ', 6055 => 'ߊ', 6056 => 'ߋ', 6057 => 'ߌ', 6058 => 'ߍ', 6059 => 'ߎ', 6060 => 'ߏ', 6061 => 'ߐ', 6062 => 'ߑ', 6063 => 'ߒ', 6064 => 'ߓ', 6065 => 'ߔ', 6066 => 'ߕ', 6067 => 'ߖ', 6068 => 'ߗ', 6069 => 'ߘ', 6070 => 'ߙ', 6071 => 'ߚ', 6072 => 'ߛ', 6073 => 'ߜ', 6074 => 'ߝ', 6075 => 'ߞ', 6076 => 'ߟ', 6077 => 'ߠ', 6078 => 'ߡ', 6079 => 'ߢ', 6080 => 'ߣ', 6081 => 'ߤ', 6082 => 'ߥ', 6083 => 'ߦ', 6084 => 'ߧ', 6085 => 'ߴ', 6086 => 'ߵ', 6087 => 'ⴰ', 6088 => 'ⴱ', 6089 => 'ⴲ', 6090 => 'ⴳ', 6091 => 'ⴴ', 6092 => 'ⴵ', 6093 => 'ⴶ', 6094 => 'ⴷ', 6095 => 'ⴸ', 6096 => 'ⴹ', 6097 => 'ⴺ', 6098 => 'ⴻ', 6099 => 'ⴼ', 6100 => 'ⴽ', 6101 => 'ⴾ', 6102 => 'ⴿ', 6103 => 'ⵀ', 6104 => 'ⵁ', 6105 => 'ⵂ', 6106 => 'ⵃ', 6107 => 'ⵄ', 6108 => 'ⵅ', 6109 => 'ⵆ', 6110 => 'ⵇ', 6111 => 'ⵈ', 6112 => 'ⵉ', 6113 => 'ⵊ', 6114 => 'ⵋ', 6115 => 'ⵌ', 6116 => 'ⵍ', 6117 => 'ⵎ', 6118 => 'ⵏ', 6119 => 'ⵐ', 6120 => 'ⵑ', 6121 => 'ⵒ', 6122 => 'ⵓ', 6123 => 'ⵔ', 6124 => 'ⵕ', 6125 => 'ⵖ', 6126 => 'ⵗ', 6127 => 'ⵘ', 6128 => 'ⵙ', 6129 => 'ⵚ', 6130 => 'ⵛ', 6131 => 'ⵜ', 6132 => 'ⵝ', 6133 => 'ⵞ', 6134 => 'ⵟ', 6135 => 'ⵠ', 6136 => 'ⵡ', 6137 => 'ⵢ', 6138 => 'ⵣ', 6139 => 'ⵤ', 6140 => 'ⵥ', 6141 => 'ⵯ', 6142 => 'ሀ', 6143 => 'ሁ', 6144 => 'ሂ', 6145 => 'ሃ', 6146 => 'ሄ', 6147 => 'ህ', 6148 => 'ሆ', 6149 => 'ሇ', 6150 => 'ለ', 6151 => 'ሉ', 6152 => 'ሊ', 6153 => 'ላ', 6154 => 'ሌ', 6155 => 'ል', 6156 => 'ሎ', 6157 => 'ሏ', 6158 => 'ⶀ', 6159 => 'ሐ', 6160 => 'ሑ', 6161 => 'ሒ', 6162 => 'ሓ', 6163 => 'ሔ', 6164 => 'ሕ', 6165 => 'ሖ', 6166 => 'ሗ', 6167 => 'መ', 6168 => 'ሙ', 6169 => 'ሚ', 6170 => 'ማ', 6171 => 'ሜ', 6172 => 'ም', 6173 => 'ሞ', 6174 => 'ሟ', 6175 => 'ᎀ', 6176 => 'ᎁ', 6177 => 'ᎂ', 6178 => 'ᎃ', 6179 => 'ⶁ', 6180 => 'ሠ', 6181 => 'ሡ', 6182 => 'ሢ', 6183 => 'ሣ', 6184 => 'ሤ', 6185 => 'ሥ', 6186 => 'ሦ', 6187 => 'ሧ', 6188 => 'ረ', 6189 => 'ሩ', 6190 => 'ሪ', 6191 => 'ራ', 6192 => 'ሬ', 6193 => 'ር', 6194 => 'ሮ', 6195 => 'ሯ', 6196 => 'ⶂ', 6197 => 'ሰ', 6198 => 'ሱ', 6199 => 'ሲ', 6200 => 'ሳ', 6201 => 'ሴ', 6202 => 'ስ', 6203 => 'ሶ', 6204 => 'ሷ', 6205 => 'ⶃ', 6206 => 'ꬁ', 6207 => 'ꬂ', 6208 => 'ꬃ', 6209 => 'ꬄ', 6210 => 'ꬅ', 6211 => 'ꬆ', 6212 => 'ሸ', 6213 => 'ሹ', 6214 => 'ሺ', 6215 => 'ሻ', 6216 => 'ሼ', 6217 => 'ሽ', 6218 => 'ሾ', 6219 => 'ሿ', 6220 => 'ⶄ', 6221 => 'ቀ', 6222 => 'ቁ', 6223 => 'ቂ', 6224 => 'ቃ', 6225 => 'ቄ', 6226 => 'ቅ', 6227 => 'ቆ', 6228 => 'ቇ', 6229 => 'ቈ', 6230 => 'ቊ', 6231 => 'ቋ', 6232 => 'ቌ', 6233 => 'ቍ', 6234 => 'ቐ', 6235 => 'ቑ', 6236 => 'ቒ', 6237 => 'ቓ', 6238 => 'ቔ', 6239 => 'ቕ', 6240 => 'ቖ', 6241 => 'ቘ', 6242 => 'ቚ', 6243 => 'ቛ', 6244 => 'ቜ', 6245 => 'ቝ', 6246 => 'በ', 6247 => 'ቡ', 6248 => 'ቢ', 6249 => 'ባ', 6250 => 'ቤ', 6251 => 'ብ', 6252 => 'ቦ', 6253 => 'ቧ', 6254 => 'ᎄ', 6255 => 'ᎅ', 6256 => 'ᎆ', 6257 => 'ᎇ', 6258 => 'ⶅ', 6259 => 'ቨ', 6260 => 'ቩ', 6261 => 'ቪ', 6262 => 'ቫ', 6263 => 'ቬ', 6264 => 'ቭ', 6265 => 'ቮ', 6266 => 'ቯ', 6267 => 'ተ', 6268 => 'ቱ', 6269 => 'ቲ', 6270 => 'ታ', 6271 => 'ቴ', 6272 => 'ት', 6273 => 'ቶ', 6274 => 'ቷ', 6275 => 'ⶆ', 6276 => 'ቸ', 6277 => 'ቹ', 6278 => 'ቺ', 6279 => 'ቻ', 6280 => 'ቼ', 6281 => 'ች', 6282 => 'ቾ', 6283 => 'ቿ', 6284 => 'ⶇ', 6285 => 'ኀ', 6286 => 'ኁ', 6287 => 'ኂ', 6288 => 'ኃ', 6289 => 'ኄ', 6290 => 'ኅ', 6291 => 'ኆ', 6292 => 'ኇ', 6293 => 'ኈ', 6294 => 'ኊ', 6295 => 'ኋ', 6296 => 'ኌ', 6297 => 'ኍ', 6298 => 'ነ', 6299 => 'ኑ', 6300 => 'ኒ', 6301 => 'ና', 6302 => 'ኔ', 6303 => 'ን', 6304 => 'ኖ', 6305 => 'ኗ', 6306 => 'ⶈ', 6307 => 'ኘ', 6308 => 'ኙ', 6309 => 'ኚ', 6310 => 'ኛ', 6311 => 'ኜ', 6312 => 'ኝ', 6313 => 'ኞ', 6314 => 'ኟ', 6315 => 'ⶉ', 6316 => 'አ', 6317 => 'ኡ', 6318 => 'ኢ', 6319 => 'ኣ', 6320 => 'ኤ', 6321 => 'እ', 6322 => 'ኦ', 6323 => 'ኧ', 6324 => 'ⶊ', 6325 => 'ከ', 6326 => 'ኩ', 6327 => 'ኪ', 6328 => 'ካ', 6329 => 'ኬ', 6330 => 'ክ', 6331 => 'ኮ', 6332 => 'ኯ', 6333 => 'ኰ', 6334 => 'ኲ', 6335 => 'ኳ', 6336 => 'ኴ', 6337 => 'ኵ', 6338 => 'ኸ', 6339 => 'ኹ', 6340 => 'ኺ', 6341 => 'ኻ', 6342 => 'ኼ', 6343 => 'ኽ', 6344 => 'ኾ', 6345 => 'ዀ', 6346 => 'ዂ', 6347 => 'ዃ', 6348 => 'ዄ', 6349 => 'ዅ', 6350 => 'ወ', 6351 => 'ዉ', 6352 => 'ዊ', 6353 => 'ዋ', 6354 => 'ዌ', 6355 => 'ው', 6356 => 'ዎ', 6357 => 'ዏ', 6358 => 'ዐ', 6359 => 'ዑ', 6360 => 'ዒ', 6361 => 'ዓ', 6362 => 'ዔ', 6363 => 'ዕ', 6364 => 'ዖ', 6365 => 'ዘ', 6366 => 'ዙ', 6367 => 'ዚ', 6368 => 'ዛ', 6369 => 'ዜ', 6370 => 'ዝ', 6371 => 'ዞ', 6372 => 'ዟ', 6373 => 'ⶋ', 6374 => 'ꬑ', 6375 => 'ꬒ', 6376 => 'ꬓ', 6377 => 'ꬔ', 6378 => 'ꬕ', 6379 => 'ꬖ', 6380 => 'ዠ', 6381 => 'ዡ', 6382 => 'ዢ', 6383 => 'ዣ', 6384 => 'ዤ', 6385 => 'ዥ', 6386 => 'ዦ', 6387 => 'ዧ', 6388 => 'የ', 6389 => 'ዩ', 6390 => 'ዪ', 6391 => 'ያ', 6392 => 'ዬ', 6393 => 'ይ', 6394 => 'ዮ', 6395 => 'ዯ', 6396 => 'ደ', 6397 => 'ዱ', 6398 => 'ዲ', 6399 => 'ዳ', 6400 => 'ዴ', 6401 => 'ድ', 6402 => 'ዶ', 6403 => 'ዷ', 6404 => 'ⶌ', 6405 => 'ꬉ', 6406 => 'ꬊ', 6407 => 'ꬋ', 6408 => 'ꬌ', 6409 => 'ꬍ', 6410 => 'ꬎ', 6411 => 'ዸ', 6412 => 'ዹ', 6413 => 'ዺ', 6414 => 'ዻ', 6415 => 'ዼ', 6416 => 'ዽ', 6417 => 'ዾ', 6418 => 'ዿ', 6419 => 'ⶍ', 6420 => 'ጀ', 6421 => 'ጁ', 6422 => 'ጂ', 6423 => 'ጃ', 6424 => 'ጄ', 6425 => 'ጅ', 6426 => 'ጆ', 6427 => 'ጇ', 6428 => 'ⶎ', 6429 => 'ገ', 6430 => 'ጉ', 6431 => 'ጊ', 6432 => 'ጋ', 6433 => 'ጌ', 6434 => 'ግ', 6435 => 'ጎ', 6436 => 'ጏ', 6437 => 'ጐ', 6438 => 'ጒ', 6439 => 'ጓ', 6440 => 'ጔ', 6441 => 'ጕ', 6442 => 'ጘ', 6443 => 'ጙ', 6444 => 'ጚ', 6445 => 'ጛ', 6446 => 'ጜ', 6447 => 'ጝ', 6448 => 'ጞ', 6449 => 'ጟ', 6450 => 'ⶓ', 6451 => 'ⶔ', 6452 => 'ⶕ', 6453 => 'ⶖ', 6454 => 'ጠ', 6455 => 'ጡ', 6456 => 'ጢ', 6457 => 'ጣ', 6458 => 'ጤ', 6459 => 'ጥ', 6460 => 'ጦ', 6461 => 'ጧ', 6462 => 'ⶏ', 6463 => 'ጨ', 6464 => 'ጩ', 6465 => 'ጪ', 6466 => 'ጫ', 6467 => 'ጬ', 6468 => 'ጭ', 6469 => 'ጮ', 6470 => 'ጯ', 6471 => 'ⶐ', 6472 => 'ꬠ', 6473 => 'ꬡ', 6474 => 'ꬢ', 6475 => 'ꬣ', 6476 => 'ꬤ', 6477 => 'ꬥ', 6478 => 'ꬦ', 6479 => 'ጰ', 6480 => 'ጱ', 6481 => 'ጲ', 6482 => 'ጳ', 6483 => 'ጴ', 6484 => 'ጵ', 6485 => 'ጶ', 6486 => 'ጷ', 6487 => 'ⶑ', 6488 => 'ጸ', 6489 => 'ጹ', 6490 => 'ጺ', 6491 => 'ጻ', 6492 => 'ጼ', 6493 => 'ጽ', 6494 => 'ጾ', 6495 => 'ጿ', 6496 => 'ꬨ', 6497 => 'ꬩ', 6498 => 'ꬪ', 6499 => 'ꬫ', 6500 => 'ꬬ', 6501 => 'ꬭ', 6502 => 'ꬮ', 6503 => 'ፀ', 6504 => 'ፁ', 6505 => 'ፂ', 6506 => 'ፃ', 6507 => 'ፄ', 6508 => 'ፅ', 6509 => 'ፆ', 6510 => 'ፇ', 6511 => 'ፈ', 6512 => 'ፉ', 6513 => 'ፊ', 6514 => 'ፋ', 6515 => 'ፌ', 6516 => 'ፍ', 6517 => 'ፎ', 6518 => 'ፏ', 6519 => 'ᎈ', 6520 => 'ᎉ', 6521 => 'ᎊ', 6522 => 'ᎋ', 6523 => 'ፐ', 6524 => 'ፑ', 6525 => 'ፒ', 6526 => 'ፓ', 6527 => 'ፔ', 6528 => 'ፕ', 6529 => 'ፖ', 6530 => 'ፗ', 6531 => 'ᎌ', 6532 => 'ᎍ', 6533 => 'ᎎ', 6534 => 'ᎏ', 6535 => 'ⶒ', 6536 => 'ፘ', 6537 => 'ፙ', 6538 => 'ፚ', 6539 => 'ⶠ', 6540 => 'ⶡ', 6541 => 'ⶢ', 6542 => 'ⶣ', 6543 => 'ⶤ', 6544 => 'ⶥ', 6545 => 'ⶦ', 6546 => 'ⶨ', 6547 => 'ⶩ', 6548 => 'ⶪ', 6549 => 'ⶫ', 6550 => 'ⶬ', 6551 => 'ⶭ', 6552 => 'ⶮ', 6553 => 'ⶰ', 6554 => 'ⶱ', 6555 => 'ⶲ', 6556 => 'ⶳ', 6557 => 'ⶴ', 6558 => 'ⶵ', 6559 => 'ⶶ', 6560 => 'ⶸ', 6561 => 'ⶹ', 6562 => 'ⶺ', 6563 => 'ⶻ', 6564 => 'ⶼ', 6565 => 'ⶽ', 6566 => 'ⶾ', 6567 => 'ⷀ', 6568 => 'ⷁ', 6569 => 'ⷂ', 6570 => 'ⷃ', 6571 => 'ⷄ', 6572 => 'ⷅ', 6573 => 'ⷆ', 6574 => 'ⷈ', 6575 => 'ⷉ', 6576 => 'ⷊ', 6577 => 'ⷋ', 6578 => 'ⷌ', 6579 => 'ⷍ', 6580 => 'ⷎ', 6581 => 'ⷐ', 6582 => 'ⷑ', 6583 => 'ⷒ', 6584 => 'ⷓ', 6585 => 'ⷔ', 6586 => 'ⷕ', 6587 => 'ⷖ', 6588 => 'ⷘ', 6589 => 'ⷙ', 6590 => 'ⷚ', 6591 => 'ⷛ', 6592 => 'ⷜ', 6593 => 'ⷝ', 6594 => 'ⷞ', 6595 => 'ॐ', 6596 => 'ॲ', 6597 => 'ऄ', 6598 => 'अ', 6599 => 'आ', 6600 => 'ॳ', 6601 => 'ॴ', 6602 => 'ॵ', 6603 => 'ॶ', 6604 => 'ॷ', 6605 => 'इ', 6606 => 'ई', 6607 => 'उ', 6608 => 'ऊ', 6609 => 'ऋ', 6610 => 'ॠ', 6611 => 'ऌ', 6612 => 'ॡ', 6613 => 'ऍ', 6614 => 'ऎ', 6615 => 'ए', 6616 => 'ऐ', 6617 => 'ऑ', 6618 => 'ऒ', 6619 => 'ओ', 6620 => 'औ', 6621 => 'क', 6622 => 'ख', 6623 => 'ग', 6624 => 'ॻ', 6625 => 'घ', 6626 => 'ङ', 6627 => 'च', 6628 => 'छ', 6629 => 'ज', 6630 => 'ॹ', 6631 => 'ॼ', 6632 => 'झ', 6633 => 'ञ', 6634 => 'ट', 6635 => 'ठ', 6636 => 'ड', 6637 => 'ॾ', 6638 => 'ढ', 6639 => 'ण', 6640 => 'त', 6641 => 'थ', 6642 => 'द', 6643 => 'ध', 6644 => 'न', 6645 => 'प', 6646 => 'फ', 6647 => 'ब', 6648 => 'ॿ', 6649 => 'भ', 6650 => 'म', 6651 => 'य', 6652 => 'ॺ', 6653 => 'र', 6654 => 'ल', 6655 => 'ळ', 6656 => 'व', 6657 => 'श', 6658 => 'ष', 6659 => 'स', 6660 => 'ह', 6661 => 'ऽ', 6662 => 'ॽ', 6663 => 'ᳩ', 6664 => 'ꣲ', 6665 => 'ꣻ', 6666 => 'অ', 6667 => 'আ', 6668 => 'ই', 6669 => 'ঈ', 6670 => 'উ', 6671 => 'ঊ', 6672 => 'ঋ', 6673 => 'ৠ', 6674 => 'ঌ', 6675 => 'ৡ', 6676 => 'এ', 6677 => 'ঐ', 6678 => 'ও', 6679 => 'ঔ', 6680 => 'ক', 6681 => 'খ', 6682 => 'গ', 6683 => 'ঘ', 6684 => 'ঙ', 6685 => 'চ', 6686 => 'ছ', 6687 => 'জ', 6688 => 'ঝ', 6689 => 'ঞ', 6690 => 'ট', 6691 => 'ঠ', 6692 => 'ড', 6693 => 'ঢ', 6694 => 'ণ', 6695 => 'ত', 6696 => 'থ', 6697 => 'দ', 6698 => 'ধ', 6699 => 'ন', 6700 => 'প', 6701 => 'ফ', 6702 => 'ব', 6703 => 'ভ', 6704 => 'ম', 6705 => 'য', 6706 => 'র', 6707 => 'ৰ', 6708 => 'ল', 6709 => 'ৱ', 6710 => 'শ', 6711 => 'ষ', 6712 => 'স', 6713 => 'হ', 6714 => 'ঽ', 6715 => 'ੴ', 6716 => 'ੳ', 6717 => 'ਉ', 6718 => 'ਊ', 6719 => 'ਓ', 6720 => 'ਅ', 6721 => 'ਆ', 6722 => 'ਐ', 6723 => 'ਔ', 6724 => 'ੲ', 6725 => 'ਇ', 6726 => 'ਈ', 6727 => 'ਏ', 6728 => 'ਸ', 6729 => 'ਹ', 6730 => 'ਕ', 6731 => 'ਖ', 6732 => 'ਗ', 6733 => 'ਘ', 6734 => 'ਙ', 6735 => 'ਚ', 6736 => 'ਛ', 6737 => 'ਜ', 6738 => 'ਝ', 6739 => 'ਞ', 6740 => 'ਟ', 6741 => 'ਠ', 6742 => 'ਡ', 6743 => 'ਢ', 6744 => 'ਣ', 6745 => 'ਤ', 6746 => 'ਥ', 6747 => 'ਦ', 6748 => 'ਧ', 6749 => 'ਨ', 6750 => 'ਪ', 6751 => 'ਫ', 6752 => 'ਬ', 6753 => 'ਭ', 6754 => 'ਮ', 6755 => 'ਯ', 6756 => 'ਰ', 6757 => 'ਲ', 6758 => 'ਵ', 6759 => 'ੜ', 6760 => 'ૐ', 6761 => 'અ', 6762 => 'આ', 6763 => 'ઇ', 6764 => 'ઈ', 6765 => 'ઉ', 6766 => 'ઊ', 6767 => 'ઋ', 6768 => 'ૠ', 6769 => 'ઌ', 6770 => 'ૡ', 6771 => 'ઍ', 6772 => 'એ', 6773 => 'ઐ', 6774 => 'ઑ', 6775 => 'ઓ', 6776 => 'ઔ', 6777 => 'ક', 6778 => 'ખ', 6779 => 'ગ', 6780 => 'ઘ', 6781 => 'ઙ', 6782 => 'ચ', 6783 => 'છ', 6784 => 'જ', 6785 => 'ઝ', 6786 => 'ઞ', 6787 => 'ટ', 6788 => 'ઠ', 6789 => 'ડ', 6790 => 'ઢ', 6791 => 'ણ', 6792 => 'ત', 6793 => 'થ', 6794 => 'દ', 6795 => 'ધ', 6796 => 'ન', 6797 => 'પ', 6798 => 'ફ', 6799 => 'બ', 6800 => 'ભ', 6801 => 'મ', 6802 => 'ય', 6803 => 'ર', 6804 => 'લ', 6805 => 'વ', 6806 => 'શ', 6807 => 'ષ', 6808 => 'સ', 6809 => 'હ', 6810 => 'ળ', 6811 => 'ઽ', 6812 => 'ଅ', 6813 => 'ଆ', 6814 => 'ଇ', 6815 => 'ଈ', 6816 => 'ଉ', 6817 => 'ଊ', 6818 => 'ଋ', 6819 => 'ୠ', 6820 => 'ଌ', 6821 => 'ୡ', 6822 => 'ଏ', 6823 => 'ଐ', 6824 => 'ଓ', 6825 => 'ଔ', 6826 => 'କ', 6827 => 'ଖ', 6828 => 'ଗ', 6829 => 'ଘ', 6830 => 'ଙ', 6831 => 'ଚ', 6832 => 'ଛ', 6833 => 'ଜ', 6834 => 'ଝ', 6835 => 'ଞ', 6836 => 'ଟ', 6837 => 'ଠ', 6838 => 'ଡ', 6839 => 'ଢ', 6840 => 'ଣ', 6841 => 'ତ', 6842 => 'ଥ', 6843 => 'ଦ', 6844 => 'ଧ', 6845 => 'ନ', 6846 => 'ପ', 6847 => 'ଫ', 6848 => 'ବ', 6849 => 'ଭ', 6850 => 'ମ', 6851 => 'ଯ', 6852 => 'ୟ', 6853 => 'ର', 6854 => 'ଲ', 6855 => 'ଳ', 6856 => 'ଵ', 6857 => 'ୱ', 6858 => 'ଶ', 6859 => 'ଷ', 6860 => 'ସ', 6861 => 'ହ', 6862 => 'ଽ', 6863 => 'ௐ', 6864 => 'அ', 6865 => 'ஆ', 6866 => 'இ', 6867 => 'ஈ', 6868 => 'உ', 6869 => 'ஊ', 6870 => 'எ', 6871 => 'ஏ', 6872 => 'ஐ', 6873 => 'ஒ', 6874 => 'ஓ', 6875 => 'ஔ', 6876 => 'ஃ', 6877 => 'க', 6878 => 'ங', 6879 => 'ச', 6880 => 'ஞ', 6881 => 'ட', 6882 => 'ண', 6883 => 'த', 6884 => 'ந', 6885 => 'ப', 6886 => 'ம', 6887 => 'ய', 6888 => 'ர', 6889 => 'ல', 6890 => 'வ', 6891 => 'ழ', 6892 => 'ள', 6893 => 'ற', 6894 => 'ன', 6895 => 'ஜ', 6896 => 'ஶ', 6897 => 'ஷ', 6898 => 'ஸ', 6899 => 'ஹ', 6900 => 'అ', 6901 => 'ఆ', 6902 => 'ఇ', 6903 => 'ఈ', 6904 => 'ఉ', 6905 => 'ఊ', 6906 => 'ఋ', 6907 => 'ౠ', 6908 => 'ఌ', 6909 => 'ౡ', 6910 => 'ఎ', 6911 => 'ఏ', 6912 => 'ఐ', 6913 => 'ఒ', 6914 => 'ఓ', 6915 => 'ఔ', 6916 => 'క', 6917 => 'ఖ', 6918 => 'గ', 6919 => 'ఘ', 6920 => 'ఙ', 6921 => 'చ', 6922 => 'ౘ', 6923 => 'ఛ', 6924 => 'జ', 6925 => 'ౙ', 6926 => 'ఝ', 6927 => 'ఞ', 6928 => 'ట', 6929 => 'ఠ', 6930 => 'డ', 6931 => 'ఢ', 6932 => 'ణ', 6933 => 'త', 6934 => 'థ', 6935 => 'ద', 6936 => 'ధ', 6937 => 'న', 6938 => 'ప', 6939 => 'ఫ', 6940 => 'బ', 6941 => 'భ', 6942 => 'మ', 6943 => 'య', 6944 => 'ర', 6945 => 'ఱ', 6946 => 'ల', 6947 => 'వ', 6948 => 'శ', 6949 => 'ష', 6950 => 'స', 6951 => 'హ', 6952 => 'ళ', 6953 => 'ఽ', 6954 => 'ಅ', 6955 => 'ಆ', 6956 => 'ಇ', 6957 => 'ಈ', 6958 => 'ಉ', 6959 => 'ಊ', 6960 => 'ಋ', 6961 => 'ೠ', 6962 => 'ಌ', 6963 => 'ೡ', 6964 => 'ಎ', 6965 => 'ಏ', 6966 => 'ಐ', 6967 => 'ಒ', 6968 => 'ಓ', 6969 => 'ಔ', 6970 => 'ಕ', 6971 => 'ಖ', 6972 => 'ಗ', 6973 => 'ಘ', 6974 => 'ಙ', 6975 => 'ಚ', 6976 => 'ಛ', 6977 => 'ಜ', 6978 => 'ಝ', 6979 => 'ಞ', 6980 => 'ಟ', 6981 => 'ಠ', 6982 => 'ಡ', 6983 => 'ಢ', 6984 => 'ಣ', 6985 => 'ತ', 6986 => 'ಥ', 6987 => 'ದ', 6988 => 'ಧ', 6989 => 'ನ', 6990 => 'ಪ', 6991 => 'ಫ', 6992 => 'ಬ', 6993 => 'ಭ', 6994 => 'ಮ', 6995 => 'ಯ', 6996 => 'ರ', 6997 => 'ಱ', 6998 => 'ಲ', 6999 => 'ವ', 7000 => 'ಶ', 7001 => 'ಷ', 7002 => 'ಸ', 7003 => 'ಹ', 7004 => 'ಳ', 7005 => 'ೞ', 7006 => 'ಽ', 7007 => 'ೱ', 7008 => 'ೲ', 7009 => 'അ', 7010 => 'ആ', 7011 => 'ഇ', 7012 => 'ഈ', 7013 => 'ഉ', 7014 => 'ഊ', 7015 => 'ഋ', 7016 => 'ൠ', 7017 => 'ഌ', 7018 => 'ൡ', 7019 => 'എ', 7020 => 'ഏ', 7021 => 'ഐ', 7022 => 'ഒ', 7023 => 'ഓ', 7024 => 'ഔ', 7025 => 'ക', 7026 => 'ഖ', 7027 => 'ഗ', 7028 => 'ഘ', 7029 => 'ങ', 7030 => 'ച', 7031 => 'ഛ', 7032 => 'ജ', 7033 => 'ഝ', 7034 => 'ഞ', 7035 => 'ട', 7036 => 'ഠ', 7037 => 'ഡ', 7038 => 'ഢ', 7039 => 'ണ', 7040 => 'ത', 7041 => 'ഥ', 7042 => 'ദ', 7043 => 'ധ', 7044 => 'ന', 7045 => 'ഩ', 7046 => 'പ', 7047 => 'ഫ', 7048 => 'ബ', 7049 => 'ഭ', 7050 => 'മ', 7051 => 'യ', 7052 => 'ര', 7053 => 'ല', 7054 => 'വ', 7055 => 'ശ', 7056 => 'ഷ', 7057 => 'സ', 7058 => 'ഹ', 7059 => 'ള', 7060 => 'ഴ', 7061 => 'റ', 7062 => 'ഺ', 7063 => 'ഽ', 7064 => 'අ', 7065 => 'ආ', 7066 => 'ඇ', 7067 => 'ඈ', 7068 => 'ඉ', 7069 => 'ඊ', 7070 => 'උ', 7071 => 'ඌ', 7072 => 'ඍ', 7073 => 'ඎ', 7074 => 'ඏ', 7075 => 'ඐ', 7076 => 'එ', 7077 => 'ඒ', 7078 => 'ඓ', 7079 => 'ඔ', 7080 => 'ඕ', 7081 => 'ඖ', 7082 => 'ක', 7083 => 'ඛ', 7084 => 'ග', 7085 => 'ඝ', 7086 => 'ඞ', 7087 => 'ඟ', 7088 => 'ච', 7089 => 'ඡ', 7090 => 'ජ', 7091 => 'ඣ', 7092 => 'ඤ', 7093 => 'ඥ', 7094 => 'ඦ', 7095 => 'ට', 7096 => 'ඨ', 7097 => 'ඩ', 7098 => 'ඪ', 7099 => 'ණ', 7100 => 'ඬ', 7101 => 'ත', 7102 => 'ථ', 7103 => 'ද', 7104 => 'ධ', 7105 => 'න', 7106 => 'ඳ', 7107 => 'ප', 7108 => 'ඵ', 7109 => 'බ', 7110 => 'භ', 7111 => 'ම', 7112 => 'ඹ', 7113 => 'ය', 7114 => 'ර', 7115 => 'ල', 7116 => 'ව', 7117 => 'ශ', 7118 => 'ෂ', 7119 => 'ස', 7120 => 'හ', 7121 => 'ළ', 7122 => 'ෆ', 7123 => 'ꯀ', 7124 => 'ꯁ', 7125 => 'ꯂ', 7126 => 'ꯃ', 7127 => 'ꯄ', 7128 => 'ꯅ', 7129 => 'ꯆ', 7130 => 'ꯇ', 7131 => 'ꯈ', 7132 => 'ꯉ', 7133 => 'ꯊ', 7134 => 'ꯋ', 7135 => 'ꯌ', 7136 => 'ꯍ', 7137 => 'ꯎ', 7138 => 'ꯏ', 7139 => 'ꯐ', 7140 => 'ꯑ', 7141 => 'ꯒ', 7142 => 'ꯓ', 7143 => 'ꯔ', 7144 => 'ꯕ', 7145 => 'ꯖ', 7146 => 'ꯗ', 7147 => 'ꯘ', 7148 => 'ꯙ', 7149 => 'ꯚ', 7150 => 'ꯛ', 7151 => 'ꯜ', 7152 => 'ꯝ', 7153 => 'ꯞ', 7154 => 'ꯟ', 7155 => 'ꯠ', 7156 => 'ꯡ', 7157 => 'ꯢ', 7158 => 'ꠀ', 7159 => 'ꠁ', 7160 => 'ꠃ', 7161 => 'ꠄ', 7162 => 'ꠅ', 7163 => 'ꠇ', 7164 => 'ꠈ', 7165 => 'ꠉ', 7166 => 'ꠊ', 7167 => 'ꠌ', 7168 => 'ꠍ', 7169 => 'ꠎ', 7170 => 'ꠏ', 7171 => 'ꠐ', 7172 => 'ꠑ', 7173 => 'ꠒ', 7174 => 'ꠓ', 7175 => 'ꠔ', 7176 => 'ꠕ', 7177 => 'ꠖ', 7178 => 'ꠗ', 7179 => 'ꠘ', 7180 => 'ꠙ', 7181 => 'ꠚ', 7182 => 'ꠛ', 7183 => 'ꠜ', 7184 => 'ꠝ', 7185 => 'ꠞ', 7186 => 'ꠟ', 7187 => 'ꠠ', 7188 => 'ꠡ', 7189 => 'ꠢ', 7190 => 'ꢂ', 7191 => 'ꢃ', 7192 => 'ꢄ', 7193 => 'ꢅ', 7194 => 'ꢆ', 7195 => 'ꢇ', 7196 => 'ꢈ', 7197 => 'ꢉ', 7198 => 'ꢊ', 7199 => 'ꢋ', 7200 => 'ꢌ', 7201 => 'ꢍ', 7202 => 'ꢎ', 7203 => 'ꢏ', 7204 => 'ꢐ', 7205 => 'ꢑ', 7206 => 'ꢒ', 7207 => 'ꢓ', 7208 => 'ꢔ', 7209 => 'ꢕ', 7210 => 'ꢖ', 7211 => 'ꢗ', 7212 => 'ꢘ', 7213 => 'ꢙ', 7214 => 'ꢚ', 7215 => 'ꢛ', 7216 => 'ꢜ', 7217 => 'ꢝ', 7218 => 'ꢞ', 7219 => 'ꢟ', 7220 => 'ꢠ', 7221 => 'ꢡ', 7222 => 'ꢢ', 7223 => 'ꢣ', 7224 => 'ꢤ', 7225 => 'ꢥ', 7226 => 'ꢦ', 7227 => 'ꢧ', 7228 => 'ꢨ', 7229 => 'ꢩ', 7230 => 'ꢪ', 7231 => 'ꢫ', 7232 => 'ꢬ', 7233 => 'ꢭ', 7234 => 'ꢮ', 7235 => 'ꢯ', 7236 => 'ꢰ', 7237 => 'ꢱ', 7238 => 'ꢲ', 7239 => 'ꢳ', 7240 => '𑂃', 7241 => '𑂄', 7242 => '𑂅', 7243 => '𑂆', 7244 => '𑂇', 7245 => '𑂈', 7246 => '𑂉', 7247 => '𑂊', 7248 => '𑂋', 7249 => '𑂌', 7250 => '𑂍', 7251 => '𑂎', 7252 => '𑂏', 7253 => '𑂐', 7254 => '𑂑', 7255 => '𑂒', 7256 => '𑂓', 7257 => '𑂔', 7258 => '𑂕', 7259 => '𑂖', 7260 => '𑂗', 7261 => '𑂘', 7262 => '𑂙', 7263 => '𑂛', 7264 => '𑂝', 7265 => '𑂞', 7266 => '𑂟', 7267 => '𑂠', 7268 => '𑂡', 7269 => '𑂢', 7270 => '𑂣', 7271 => '𑂤', 7272 => '𑂥', 7273 => '𑂦', 7274 => '𑂧', 7275 => '𑂨', 7276 => '𑂩', 7277 => '𑂪', 7278 => '𑂬', 7279 => '𑂭', 7280 => '𑂮', 7281 => '𑂯', 7282 => 'ᮃ', 7283 => 'ᮄ', 7284 => 'ᮅ', 7285 => 'ᮆ', 7286 => 'ᮇ', 7287 => 'ᮈ', 7288 => 'ᮉ', 7289 => 'ᮊ', 7290 => 'ᮮ', 7291 => 'ᮋ', 7292 => 'ᮌ', 7293 => 'ᮍ', 7294 => 'ᮎ', 7295 => 'ᮏ', 7296 => 'ᮐ', 7297 => 'ᮑ', 7298 => 'ᮒ', 7299 => 'ᮓ', 7300 => 'ᮔ', 7301 => 'ᮕ', 7302 => 'ᮖ', 7303 => 'ᮗ', 7304 => 'ᮘ', 7305 => 'ᮙ', 7306 => 'ᮚ', 7307 => 'ᮛ', 7308 => 'ᮜ', 7309 => 'ᮝ', 7310 => 'ᮞ', 7311 => 'ᮟ', 7312 => 'ᮯ', 7313 => 'ᮠ', 7314 => '𑀅', 7315 => '𑀆', 7316 => '𑀇', 7317 => '𑀈', 7318 => '𑀉', 7319 => '𑀊', 7320 => '𑀋', 7321 => '𑀌', 7322 => '𑀍', 7323 => '𑀎', 7324 => '𑀏', 7325 => '𑀐', 7326 => '𑀑', 7327 => '𑀒', 7328 => '𑀓', 7329 => '𑀔', 7330 => '𑀕', 7331 => '𑀖', 7332 => '𑀗', 7333 => '𑀘', 7334 => '𑀙', 7335 => '𑀚', 7336 => '𑀛', 7337 => '𑀜', 7338 => '𑀝', 7339 => '𑀞', 7340 => '𑀟', 7341 => '𑀠', 7342 => '𑀡', 7343 => '𑀢', 7344 => '𑀣', 7345 => '𑀤', 7346 => '𑀥', 7347 => '𑀦', 7348 => '𑀧', 7349 => '𑀨', 7350 => '𑀩', 7351 => '𑀪', 7352 => '𑀫', 7353 => '𑀬', 7354 => '𑀭', 7355 => '𑀮', 7356 => '𑀯', 7357 => '𑀰', 7358 => '𑀱', 7359 => '𑀲', 7360 => '𑀳', 7361 => '𑀃', 7362 => '𑀄', 7363 => '𑀴', 7364 => '𑀵', 7365 => '𑀶', 7366 => '𑀷', 7367 => '𐨀', 7368 => '𐨐', 7369 => '𐨑', 7370 => '𐨒', 7371 => '𐨓', 7372 => '𐨕', 7373 => '𐨖', 7374 => '𐨗', 7375 => '𐨙', 7376 => '𐨚', 7377 => '𐨛', 7378 => '𐨜', 7379 => '𐨝', 7380 => '𐨞', 7381 => '𐨟', 7382 => '𐨠', 7383 => '𐨡', 7384 => '𐨢', 7385 => '𐨣', 7386 => '𐨤', 7387 => '𐨥', 7388 => '𐨦', 7389 => '𐨧', 7390 => '𐨨', 7391 => '𐨩', 7392 => '𐨪', 7393 => '𐨫', 7394 => '𐨬', 7395 => '𐨭', 7396 => '𐨮', 7397 => '𐨯', 7398 => '𐨰', 7399 => '𐨱', 7400 => '𐨲', 7401 => '𐨳', 7402 => 'ก', 7403 => 'ข', 7404 => 'ฃ', 7405 => 'ค', 7406 => 'ฅ', 7407 => 'ฆ', 7408 => 'ง', 7409 => 'จ', 7410 => 'ฉ', 7411 => 'ช', 7412 => 'ซ', 7413 => 'ฌ', 7414 => 'ญ', 7415 => 'ฎ', 7416 => 'ฏ', 7417 => 'ฐ', 7418 => 'ฑ', 7419 => 'ฒ', 7420 => 'ณ', 7421 => 'ด', 7422 => 'ต', 7423 => 'ถ', 7424 => 'ท', 7425 => 'ธ', 7426 => 'น', 7427 => 'บ', 7428 => 'ป', 7429 => 'ผ', 7430 => 'ฝ', 7431 => 'พ', 7432 => 'ฟ', 7433 => 'ภ', 7434 => 'ม', 7435 => 'ย', 7436 => 'ร', 7437 => 'ฤ', 7438 => 'ล', 7439 => 'ฦ', 7440 => 'ว', 7441 => 'ศ', 7442 => 'ษ', 7443 => 'ส', 7444 => 'ห', 7445 => 'ฬ', 7446 => 'อ', 7447 => 'ฮ', 7448 => 'ฯ', 7449 => 'ะ', 7450 => 'า', 7451 => 'ำ', 7452 => 'เ', 7453 => 'แ', 7454 => 'โ', 7455 => 'ใ', 7456 => 'ไ', 7457 => 'ๅ', 7458 => 'ກ', 7459 => 'ຂ', 7460 => 'ຄ', 7461 => 'ງ', 7462 => 'ຈ', 7463 => 'ສ', 7464 => 'ຊ', 7465 => 'ຍ', 7466 => 'ດ', 7467 => 'ຕ', 7468 => 'ຖ', 7469 => 'ທ', 7470 => 'ນ', 7471 => 'ບ', 7472 => 'ປ', 7473 => 'ຜ', 7474 => 'ຝ', 7475 => 'ພ', 7476 => 'ຟ', 7477 => 'ມ', 7478 => 'ຢ', 7479 => 'ຣ', 7480 => 'ລ', 7481 => 'ວ', 7482 => 'ຫ', 7483 => 'ອ', 7484 => 'ຮ', 7485 => 'ຯ', 7486 => 'ະ', 7487 => 'າ', 7488 => 'ຳ', 7489 => 'ຽ', 7490 => 'ເ', 7491 => 'ແ', 7492 => 'ໂ', 7493 => 'ໃ', 7494 => 'ໄ', 7495 => 'ꪀ', 7496 => 'ꪁ', 7497 => 'ꪂ', 7498 => 'ꪃ', 7499 => 'ꪄ', 7500 => 'ꪅ', 7501 => 'ꪆ', 7502 => 'ꪇ', 7503 => 'ꪈ', 7504 => 'ꪉ', 7505 => 'ꪊ', 7506 => 'ꪋ', 7507 => 'ꪌ', 7508 => 'ꪍ', 7509 => 'ꪎ', 7510 => 'ꪏ', 7511 => 'ꪐ', 7512 => 'ꪑ', 7513 => 'ꪒ', 7514 => 'ꪓ', 7515 => 'ꪔ', 7516 => 'ꪕ', 7517 => 'ꪖ', 7518 => 'ꪗ', 7519 => 'ꪘ', 7520 => 'ꪙ', 7521 => 'ꪚ', 7522 => 'ꪛ', 7523 => 'ꪜ', 7524 => 'ꪝ', 7525 => 'ꪞ', 7526 => 'ꪟ', 7527 => 'ꪠ', 7528 => 'ꪡ', 7529 => 'ꪢ', 7530 => 'ꪣ', 7531 => 'ꪤ', 7532 => 'ꪥ', 7533 => 'ꪦ', 7534 => 'ꪧ', 7535 => 'ꪨ', 7536 => 'ꪩ', 7537 => 'ꪪ', 7538 => 'ꪫ', 7539 => 'ꪬ', 7540 => 'ꪭ', 7541 => 'ꪮ', 7542 => 'ꪯ', 7543 => 'ꪱ', 7544 => 'ꪵ', 7545 => 'ꪶ', 7546 => 'ꪹ', 7547 => 'ꪺ', 7548 => 'ꪻ', 7549 => 'ꪼ', 7550 => 'ꪽ', 7551 => 'ꫀ', 7552 => 'ꫂ', 7553 => 'ꫛ', 7554 => 'ꫜ', 7555 => 'ཀ', 7556 => 'ཫ', 7557 => 'ཁ', 7558 => 'ག', 7559 => 'ང', 7560 => 'ཅ', 7561 => 'ཆ', 7562 => 'ཇ', 7563 => 'ཉ', 7564 => 'ཊ', 7565 => 'ཋ', 7566 => 'ཌ', 7567 => 'ཎ', 7568 => 'ཏ', 7569 => 'ཐ', 7570 => 'ད', 7571 => 'ན', 7572 => 'པ', 7573 => 'ཕ', 7574 => 'བ', 7575 => 'མ', 7576 => 'ཙ', 7577 => 'ཚ', 7578 => 'ཛ', 7579 => 'ཝ', 7580 => 'ཞ', 7581 => 'ཟ', 7582 => 'འ', 7583 => 'ཡ', 7584 => 'ར', 7585 => 'ཬ', 7586 => 'ལ', 7587 => 'ཤ', 7588 => 'ཥ', 7589 => 'ས', 7590 => 'ཧ', 7591 => 'ཨ', 7592 => 'ྈ', 7593 => 'ྉ', 7594 => 'ྌ', 7595 => 'ྊ', 7596 => 'ྋ', 7597 => 'ᰀ', 7598 => 'ᰁ', 7599 => 'ᰂ', 7600 => 'ᰃ', 7601 => 'ᰄ', 7602 => 'ᰅ', 7603 => 'ᰆ', 7604 => 'ᰇ', 7605 => 'ᰈ', 7606 => 'ᰉ', 7607 => 'ᱍ', 7608 => 'ᱎ', 7609 => 'ᱏ', 7610 => 'ᰊ', 7611 => 'ᰋ', 7612 => 'ᰌ', 7613 => 'ᰍ', 7614 => 'ᰎ', 7615 => 'ᰏ', 7616 => 'ᰐ', 7617 => 'ᰑ', 7618 => 'ᰒ', 7619 => 'ᰓ', 7620 => 'ᰔ', 7621 => 'ᰕ', 7622 => 'ᰖ', 7623 => 'ᰗ', 7624 => 'ᰘ', 7625 => 'ᰙ', 7626 => 'ᰚ', 7627 => 'ᰛ', 7628 => 'ᰜ', 7629 => 'ᰝ', 7630 => 'ᰞ', 7631 => 'ᰟ', 7632 => 'ᰠ', 7633 => 'ᰡ', 7634 => 'ᰢ', 7635 => 'ᰣ', 7636 => 'ꡀ', 7637 => 'ꡁ', 7638 => 'ꡂ', 7639 => 'ꡃ', 7640 => 'ꡄ', 7641 => 'ꡅ', 7642 => 'ꡆ', 7643 => 'ꡇ', 7644 => 'ꡩ', 7645 => 'ꡪ', 7646 => 'ꡫ', 7647 => 'ꡬ', 7648 => 'ꡈ', 7649 => 'ꡉ', 7650 => 'ꡊ', 7651 => 'ꡋ', 7652 => 'ꡌ', 7653 => 'ꡍ', 7654 => 'ꡎ', 7655 => 'ꡏ', 7656 => 'ꡐ', 7657 => 'ꡑ', 7658 => 'ꡒ', 7659 => 'ꡓ', 7660 => 'ꡧ', 7661 => 'ꡔ', 7662 => 'ꡕ', 7663 => 'ꡖ', 7664 => 'ꡗ', 7665 => 'ꡨ', 7666 => 'ꡭ', 7667 => 'ꡘ', 7668 => 'ꡱ', 7669 => 'ꡲ', 7670 => 'ꡙ', 7671 => 'ꡚ', 7672 => 'ꡮ', 7673 => 'ꡛ', 7674 => 'ꡜ', 7675 => 'ꡯ', 7676 => 'ꡰ', 7677 => 'ꡝ', 7678 => 'ꡢ', 7679 => 'ꡣ', 7680 => 'ꡤ', 7681 => 'ꡥ', 7682 => 'ꡞ', 7683 => 'ꡟ', 7684 => 'ꡠ', 7685 => 'ꡡ', 7686 => 'ꡦ', 7687 => 'ꡳ', 7688 => 'ᤀ', 7689 => 'ᤁ', 7690 => 'ᤂ', 7691 => 'ᤃ', 7692 => 'ᤄ', 7693 => 'ᤅ', 7694 => 'ᤆ', 7695 => 'ᤇ', 7696 => 'ᤈ', 7697 => 'ᤉ', 7698 => 'ᤊ', 7699 => 'ᤋ', 7700 => 'ᤌ', 7701 => 'ᤍ', 7702 => 'ᤎ', 7703 => 'ᤏ', 7704 => 'ᤐ', 7705 => 'ᤑ', 7706 => 'ᤒ', 7707 => 'ᤓ', 7708 => 'ᤔ', 7709 => 'ᤕ', 7710 => 'ᤖ', 7711 => 'ᤗ', 7712 => 'ᤘ', 7713 => 'ᤙ', 7714 => 'ᤚ', 7715 => 'ᤛ', 7716 => 'ᤜ', 7717 => 'ᜀ', 7718 => 'ᜁ', 7719 => 'ᜂ', 7720 => 'ᜃ', 7721 => 'ᜄ', 7722 => 'ᜅ', 7723 => 'ᜆ', 7724 => 'ᜇ', 7725 => 'ᜈ', 7726 => 'ᜉ', 7727 => 'ᜊ', 7728 => 'ᜋ', 7729 => 'ᜌ', 7730 => 'ᜎ', 7731 => 'ᜏ', 7732 => 'ᜐ', 7733 => 'ᜑ', 7734 => 'ᜠ', 7735 => 'ᜡ', 7736 => 'ᜢ', 7737 => 'ᜣ', 7738 => 'ᜤ', 7739 => 'ᜥ', 7740 => 'ᜦ', 7741 => 'ᜧ', 7742 => 'ᜨ', 7743 => 'ᜩ', 7744 => 'ᜪ', 7745 => 'ᜫ', 7746 => 'ᜬ', 7747 => 'ᜭ', 7748 => 'ᜮ', 7749 => 'ᜯ', 7750 => 'ᜰ', 7751 => 'ᜱ', 7752 => 'ᝀ', 7753 => 'ᝁ', 7754 => 'ᝂ', 7755 => 'ᝃ', 7756 => 'ᝄ', 7757 => 'ᝅ', 7758 => 'ᝆ', 7759 => 'ᝇ', 7760 => 'ᝈ', 7761 => 'ᝉ', 7762 => 'ᝊ', 7763 => 'ᝋ', 7764 => 'ᝌ', 7765 => 'ᝍ', 7766 => 'ᝎ', 7767 => 'ᝏ', 7768 => 'ᝐ', 7769 => 'ᝑ', 7770 => 'ᝠ', 7771 => 'ᝡ', 7772 => 'ᝢ', 7773 => 'ᝣ', 7774 => 'ᝤ', 7775 => 'ᝥ', 7776 => 'ᝦ', 7777 => 'ᝧ', 7778 => 'ᝨ', 7779 => 'ᝩ', 7780 => 'ᝪ', 7781 => 'ᝫ', 7782 => 'ᝬ', 7783 => 'ᝮ', 7784 => 'ᝯ', 7785 => 'ᝰ', 7786 => 'ᨀ', 7787 => 'ᨁ', 7788 => 'ᨂ', 7789 => 'ᨃ', 7790 => 'ᨄ', 7791 => 'ᨅ', 7792 => 'ᨆ', 7793 => 'ᨇ', 7794 => 'ᨈ', 7795 => 'ᨉ', 7796 => 'ᨊ', 7797 => 'ᨋ', 7798 => 'ᨌ', 7799 => 'ᨍ', 7800 => 'ᨎ', 7801 => 'ᨏ', 7802 => 'ᨐ', 7803 => 'ᨑ', 7804 => 'ᨒ', 7805 => 'ᨓ', 7806 => 'ᨔ', 7807 => 'ᨕ', 7808 => 'ᨖ', 7809 => 'ᯀ', 7810 => 'ᯂ', 7811 => 'ᯅ', 7812 => 'ᯇ', 7813 => 'ᯉ', 7814 => 'ᯋ', 7815 => 'ᯎ', 7816 => 'ᯐ', 7817 => 'ᯑ', 7818 => 'ᯒ', 7819 => 'ᯔ', 7820 => 'ᯖ', 7821 => 'ᯘ', 7822 => 'ᯛ', 7823 => 'ᯝ', 7824 => 'ᯞ', 7825 => 'ᯠ', 7826 => 'ᯡ', 7827 => 'ᯢ', 7828 => 'ᯣ', 7829 => 'ᯤ', 7830 => 'ᯥ', 7831 => 'ꤰ', 7832 => 'ꤱ', 7833 => 'ꤲ', 7834 => 'ꤳ', 7835 => 'ꤴ', 7836 => 'ꤵ', 7837 => 'ꤶ', 7838 => 'ꤷ', 7839 => 'ꤸ', 7840 => 'ꤹ', 7841 => 'ꤺ', 7842 => 'ꤻ', 7843 => 'ꤼ', 7844 => 'ꤽ', 7845 => 'ꤾ', 7846 => 'ꤿ', 7847 => 'ꥀ', 7848 => 'ꥁ', 7849 => 'ꥂ', 7850 => 'ꥃ', 7851 => 'ꥄ', 7852 => 'ꥅ', 7853 => 'ꥆ', 7854 => 'ꤊ', 7855 => 'ꤋ', 7856 => 'ꤌ', 7857 => 'ꤍ', 7858 => 'ꤎ', 7859 => 'ꤏ', 7860 => 'ꤐ', 7861 => 'ꤑ', 7862 => 'ꤒ', 7863 => 'ꤓ', 7864 => 'ꤔ', 7865 => 'ꤕ', 7866 => 'ꤖ', 7867 => 'ꤗ', 7868 => 'ꤘ', 7869 => 'ꤙ', 7870 => 'ꤚ', 7871 => 'ꤛ', 7872 => 'ꤜ', 7873 => 'ꤝ', 7874 => 'ꤞ', 7875 => 'ꤟ', 7876 => 'ꤠ', 7877 => 'ꤡ', 7878 => 'ꤢ', 7879 => 'ꤣ', 7880 => 'ꤤ', 7881 => 'ꤥ', 7882 => 'က', 7883 => 'ၵ', 7884 => 'ခ', 7885 => 'ၶ', 7886 => 'ဂ', 7887 => 'ၷ', 7888 => 'ꩠ', 7889 => 'ဃ', 7890 => 'င', 7891 => 'ၚ', 7892 => 'စ', 7893 => 'ၸ', 7894 => 'ꩡ', 7895 => 'ဆ', 7896 => 'ꩢ', 7897 => 'ဇ', 7898 => 'ꩣ', 7899 => 'ၹ', 7900 => 'ꩲ', 7901 => 'ဈ', 7902 => 'ၛ', 7903 => 'ꩤ', 7904 => 'ၡ', 7905 => 'ဉ', 7906 => 'ၺ', 7907 => 'ꩥ', 7908 => 'ည', 7909 => 'ဋ', 7910 => 'ꩦ', 7911 => 'ဌ', 7912 => 'ꩧ', 7913 => 'ဍ', 7914 => 'ꩨ', 7915 => 'ဎ', 7916 => 'ꩩ', 7917 => 'ဏ', 7918 => 'ၮ', 7919 => 'တ', 7920 => 'ထ', 7921 => 'ဒ', 7922 => 'ၻ', 7923 => 'ဓ', 7924 => 'ꩪ', 7925 => 'န', 7926 => 'ၼ', 7927 => 'ꩫ', 7928 => 'ပ', 7929 => 'ဖ', 7930 => 'ၽ', 7931 => 'ၾ', 7932 => 'ꩯ', 7933 => 'ႎ', 7934 => 'ဗ', 7935 => 'ၿ', 7936 => 'ဘ', 7937 => 'မ', 7938 => 'ယ', 7939 => 'ရ', 7940 => 'ꩳ', 7941 => 'ꩺ', 7942 => 'လ', 7943 => 'ဝ', 7944 => 'ႀ', 7945 => 'ၐ', 7946 => 'ၑ', 7947 => 'ၥ', 7948 => 'သ', 7949 => 'ꩬ', 7950 => 'ဟ', 7951 => 'ႁ', 7952 => 'ꩭ', 7953 => 'ꩮ', 7954 => 'ꩱ', 7955 => 'ဠ', 7956 => 'ၜ', 7957 => 'ၝ', 7958 => 'ၯ', 7959 => 'ၰ', 7960 => 'ၦ', 7961 => 'အ', 7962 => 'ဢ', 7963 => 'ဣ', 7964 => 'ဤ', 7965 => 'ဥ', 7966 => 'ဦ', 7967 => 'ၒ', 7968 => 'ၓ', 7969 => 'ၔ', 7970 => 'ၕ', 7971 => 'ဧ', 7972 => 'ဨ', 7973 => 'ဩ', 7974 => 'ဪ', 7975 => 'ꩴ', 7976 => 'ꩵ', 7977 => 'ꩶ', 7978 => 'ក', 7979 => 'ខ', 7980 => 'គ', 7981 => 'ឃ', 7982 => 'ង', 7983 => 'ច', 7984 => 'ឆ', 7985 => 'ជ', 7986 => 'ឈ', 7987 => 'ញ', 7988 => 'ដ', 7989 => 'ឋ', 7990 => 'ឌ', 7991 => 'ឍ', 7992 => 'ណ', 7993 => 'ត', 7994 => 'ថ', 7995 => 'ទ', 7996 => 'ធ', 7997 => 'ន', 7998 => 'ប', 7999 => 'ផ', 8000 => 'ព', 8001 => 'ភ', 8002 => 'ម', 8003 => 'យ', 8004 => 'រ', 8005 => 'ល', 8006 => 'វ', 8007 => 'ឝ', 8008 => 'ឞ', 8009 => 'ស', 8010 => 'ហ', 8011 => 'ឡ', 8012 => 'អ', 8013 => 'ៜ', 8014 => 'ឣ', 8015 => 'ឤ', 8016 => 'ឥ', 8017 => 'ឦ', 8018 => 'ឧ', 8019 => 'ឨ', 8020 => 'ឩ', 8021 => 'ឪ', 8022 => 'ឫ', 8023 => 'ឬ', 8024 => 'ឭ', 8025 => 'ឮ', 8026 => 'ឯ', 8027 => 'ឰ', 8028 => 'ឱ', 8029 => 'ឲ', 8030 => 'ឳ', 8031 => 'ᥐ', 8032 => 'ᥑ', 8033 => 'ᥒ', 8034 => 'ᥓ', 8035 => 'ᥔ', 8036 => 'ᥕ', 8037 => 'ᥖ', 8038 => 'ᥗ', 8039 => 'ᥘ', 8040 => 'ᥙ', 8041 => 'ᥚ', 8042 => 'ᥛ', 8043 => 'ᥜ', 8044 => 'ᥝ', 8045 => 'ᥞ', 8046 => 'ᥟ', 8047 => 'ᥠ', 8048 => 'ᥡ', 8049 => 'ᥢ', 8050 => 'ᥣ', 8051 => 'ᥤ', 8052 => 'ᥥ', 8053 => 'ᥦ', 8054 => 'ᥧ', 8055 => 'ᥨ', 8056 => 'ᥩ', 8057 => 'ᥪ', 8058 => 'ᥫ', 8059 => 'ᥬ', 8060 => 'ᥭ', 8061 => 'ᥰ', 8062 => 'ᥱ', 8063 => 'ᥲ', 8064 => 'ᥳ', 8065 => 'ᥴ', 8066 => 'ᦀ', 8067 => 'ᦁ', 8068 => 'ᦂ', 8069 => 'ᦃ', 8070 => 'ᦄ', 8071 => 'ᦅ', 8072 => 'ᦆ', 8073 => 'ᦇ', 8074 => 'ᦈ', 8075 => 'ᦉ', 8076 => 'ᦊ', 8077 => 'ᦋ', 8078 => 'ᦌ', 8079 => 'ᦍ', 8080 => 'ᦎ', 8081 => 'ᦏ', 8082 => 'ᦐ', 8083 => 'ᦑ', 8084 => 'ᦒ', 8085 => 'ᦓ', 8086 => 'ᦔ', 8087 => 'ᦕ', 8088 => 'ᦖ', 8089 => 'ᦗ', 8090 => 'ᦘ', 8091 => 'ᦙ', 8092 => 'ᦚ', 8093 => 'ᦛ', 8094 => 'ᦜ', 8095 => 'ᦝ', 8096 => 'ᦞ', 8097 => 'ᦟ', 8098 => 'ᦠ', 8099 => 'ᦡ', 8100 => 'ᦢ', 8101 => 'ᦣ', 8102 => 'ᦤ', 8103 => 'ᦥ', 8104 => 'ᦦ', 8105 => 'ᦧ', 8106 => 'ᦨ', 8107 => 'ᦩ', 8108 => 'ᦪ', 8109 => 'ᦫ', 8110 => 'ᧁ', 8111 => 'ᧂ', 8112 => 'ᧃ', 8113 => 'ᧄ', 8114 => 'ᧅ', 8115 => 'ᧆ', 8116 => 'ᧇ', 8117 => 'ᨠ', 8118 => 'ᨡ', 8119 => 'ᨢ', 8120 => 'ᨣ', 8121 => 'ᨤ', 8122 => 'ᨥ', 8123 => 'ᨦ', 8124 => 'ᨧ', 8125 => 'ᨨ', 8126 => 'ᨩ', 8127 => 'ᨪ', 8128 => 'ᨫ', 8129 => 'ᨬ', 8130 => 'ᨭ', 8131 => 'ᨮ', 8132 => 'ᨯ', 8133 => 'ᨰ', 8134 => 'ᨱ', 8135 => 'ᨲ', 8136 => 'ᨳ', 8137 => 'ᨴ', 8138 => 'ᨵ', 8139 => 'ᨶ', 8140 => 'ᨷ', 8141 => 'ᨸ', 8142 => 'ᨹ', 8143 => 'ᨺ', 8144 => 'ᨻ', 8145 => 'ᨼ', 8146 => 'ᨽ', 8147 => 'ᨾ', 8148 => 'ᨿ', 8149 => 'ᩀ', 8150 => 'ᩁ', 8151 => 'ᩂ', 8152 => 'ᩃ', 8153 => 'ᩄ', 8154 => 'ᩅ', 8155 => 'ᩆ', 8156 => 'ᩇ', 8157 => 'ᩈ', 8158 => 'ᩉ', 8159 => 'ᩊ', 8160 => 'ᩋ', 8161 => 'ᩌ', 8162 => 'ᩓ', 8163 => 'ᩍ', 8164 => 'ᩎ', 8165 => 'ᩏ', 8166 => 'ᩐ', 8167 => 'ᩑ', 8168 => 'ᩒ', 8169 => 'ꨀ', 8170 => 'ꨁ', 8171 => 'ꨂ', 8172 => 'ꨃ', 8173 => 'ꨄ', 8174 => 'ꨅ', 8175 => 'ꨆ', 8176 => 'ꨇ', 8177 => 'ꨈ', 8178 => 'ꨉ', 8179 => 'ꨊ', 8180 => 'ꨋ', 8181 => 'ꨌ', 8182 => 'ꨍ', 8183 => 'ꨎ', 8184 => 'ꨏ', 8185 => 'ꨐ', 8186 => 'ꨑ', 8187 => 'ꨒ', 8188 => 'ꨓ', 8189 => 'ꨔ', 8190 => 'ꨕ', 8191 => 'ꨖ', 8192 => 'ꨗ', 8193 => 'ꨘ', 8194 => 'ꨙ', 8195 => 'ꨚ', 8196 => 'ꨛ', 8197 => 'ꨜ', 8198 => 'ꨝ', 8199 => 'ꨞ', 8200 => 'ꨟ', 8201 => 'ꨠ', 8202 => 'ꨡ', 8203 => 'ꨢ', 8204 => 'ꨣ', 8205 => 'ꨤ', 8206 => 'ꨥ', 8207 => 'ꨦ', 8208 => 'ꨧ', 8209 => 'ꨨ', 8210 => 'ꩀ', 8211 => 'ꩁ', 8212 => 'ꩂ', 8213 => 'ꩄ', 8214 => 'ꩅ', 8215 => 'ꩆ', 8216 => 'ꩇ', 8217 => 'ꩈ', 8218 => 'ꩉ', 8219 => 'ꩊ', 8220 => 'ꩋ', 8221 => 'ᬅ', 8222 => 'ᬆ', 8223 => 'ᬇ', 8224 => 'ᬈ', 8225 => 'ᬉ', 8226 => 'ᬊ', 8227 => 'ᬋ', 8228 => 'ᬌ', 8229 => 'ᬍ', 8230 => 'ᬎ', 8231 => 'ᬏ', 8232 => 'ᬐ', 8233 => 'ᬑ', 8234 => 'ᬒ', 8235 => 'ᬓ', 8236 => 'ᭅ', 8237 => 'ᭆ', 8238 => 'ᬔ', 8239 => 'ᬕ', 8240 => 'ᬖ', 8241 => 'ᬗ', 8242 => 'ᬘ', 8243 => 'ᬙ', 8244 => 'ᬚ', 8245 => 'ᬛ', 8246 => 'ᬜ', 8247 => 'ᬝ', 8248 => 'ᬞ', 8249 => 'ᬟ', 8250 => 'ᬠ', 8251 => 'ᬡ', 8252 => 'ᬢ', 8253 => 'ᭇ', 8254 => 'ᬣ', 8255 => 'ᬤ', 8256 => 'ᬥ', 8257 => 'ᬦ', 8258 => 'ᬧ', 8259 => 'ᭈ', 8260 => 'ᬨ', 8261 => 'ᬩ', 8262 => 'ᬪ', 8263 => 'ᬫ', 8264 => 'ᬬ', 8265 => 'ᬭ', 8266 => 'ᬮ', 8267 => 'ᬯ', 8268 => 'ᭉ', 8269 => 'ᬰ', 8270 => 'ᬱ', 8271 => 'ᬲ', 8272 => 'ᭊ', 8273 => 'ᭋ', 8274 => 'ᬳ', 8275 => 'ꦄ', 8276 => 'ꦅ', 8277 => 'ꦆ', 8278 => 'ꦇ', 8279 => 'ꦈ', 8280 => 'ꦉ', 8281 => 'ꦊ', 8282 => 'ꦋ', 8283 => 'ꦌ', 8284 => 'ꦍ', 8285 => 'ꦎ', 8286 => 'ꦏ', 8287 => 'ꦐ', 8288 => 'ꦑ', 8289 => 'ꦒ', 8290 => 'ꦓ', 8291 => 'ꦔ', 8292 => 'ꦕ', 8293 => 'ꦖ', 8294 => 'ꦗ', 8295 => 'ꦘ', 8296 => 'ꦙ', 8297 => 'ꦚ', 8298 => 'ꦛ', 8299 => 'ꦜ', 8300 => 'ꦝ', 8301 => 'ꦞ', 8302 => 'ꦟ', 8303 => 'ꦠ', 8304 => 'ꦡ', 8305 => 'ꦢ', 8306 => 'ꦣ', 8307 => 'ꦤ', 8308 => 'ꦥ', 8309 => 'ꦦ', 8310 => 'ꦧ', 8311 => 'ꦨ', 8312 => 'ꦩ', 8313 => 'ꦪ', 8314 => 'ꦫ', 8315 => 'ꦭ', 8316 => 'ꦮ', 8317 => 'ꦯ', 8318 => 'ꦰ', 8319 => 'ꦱ', 8320 => 'ꦲ', 8321 => 'ᢀ', 8322 => 'ᢁ', 8323 => 'ᢂ', 8324 => 'ᢃ', 8325 => 'ᢄ', 8326 => 'ᢅ', 8327 => 'ᢆ', 8328 => 'ᡃ', 8329 => 'ᠠ', 8330 => 'ᢇ', 8331 => 'ᠡ', 8332 => 'ᡄ', 8333 => 'ᡝ', 8334 => 'ᠢ', 8335 => 'ᡅ', 8336 => 'ᡞ', 8337 => 'ᡳ', 8338 => 'ᢈ', 8339 => 'ᡟ', 8340 => 'ᠣ', 8341 => 'ᡆ', 8342 => 'ᠤ', 8343 => 'ᡇ', 8344 => 'ᡡ', 8345 => 'ᠥ', 8346 => 'ᡈ', 8347 => 'ᠦ', 8348 => 'ᡉ', 8349 => 'ᡠ', 8350 => 'ᠧ', 8351 => 'ᠨ', 8352 => 'ᠩ', 8353 => 'ᡊ', 8354 => 'ᡢ', 8355 => 'ᢊ', 8356 => 'ᢛ', 8357 => 'ᠪ', 8358 => 'ᡋ', 8359 => 'ᠫ', 8360 => 'ᡌ', 8361 => 'ᡦ', 8362 => 'ᠬ', 8363 => 'ᡍ', 8364 => 'ᠭ', 8365 => 'ᡎ', 8366 => 'ᡤ', 8367 => 'ᢚ', 8368 => 'ᡥ', 8369 => 'ᠮ', 8370 => 'ᡏ', 8371 => 'ᠯ', 8372 => 'ᠰ', 8373 => 'ᠱ', 8374 => 'ᡧ', 8375 => 'ᢜ', 8376 => 'ᢝ', 8377 => 'ᢢ', 8378 => 'ᢤ', 8379 => 'ᢥ', 8380 => 'ᠲ', 8381 => 'ᡐ', 8382 => 'ᡨ', 8383 => 'ᠳ', 8384 => 'ᡑ', 8385 => 'ᡩ', 8386 => 'ᠴ', 8387 => 'ᡒ', 8388 => 'ᡱ', 8389 => 'ᡜ', 8390 => 'ᢋ', 8391 => 'ᠵ', 8392 => 'ᡓ', 8393 => 'ᡪ', 8394 => 'ᡷ', 8395 => 'ᠶ', 8396 => 'ᡕ', 8397 => 'ᡲ', 8398 => 'ᠷ', 8399 => 'ᡵ', 8400 => 'ᠸ', 8401 => 'ᡖ', 8402 => 'ᠹ', 8403 => 'ᡫ', 8404 => 'ᡶ', 8405 => 'ᠺ', 8406 => 'ᡗ', 8407 => 'ᡣ', 8408 => 'ᡴ', 8409 => 'ᢉ', 8410 => 'ᠻ', 8411 => 'ᠼ', 8412 => 'ᡔ', 8413 => 'ᡮ', 8414 => 'ᠽ', 8415 => 'ᡯ', 8416 => 'ᡘ', 8417 => 'ᡬ', 8418 => 'ᠾ', 8419 => 'ᡙ', 8420 => 'ᡭ', 8421 => 'ᠿ', 8422 => 'ᡀ', 8423 => 'ᡁ', 8424 => 'ᡂ', 8425 => 'ᡚ', 8426 => 'ᡛ', 8427 => 'ᡰ', 8428 => 'ᢌ', 8429 => 'ᢞ', 8430 => 'ᢍ', 8431 => 'ᢎ', 8432 => 'ᢟ', 8433 => 'ᢏ', 8434 => 'ᢐ', 8435 => 'ᢘ', 8436 => 'ᢠ', 8437 => 'ᢑ', 8438 => 'ᢡ', 8439 => 'ᢒ', 8440 => 'ᢓ', 8441 => 'ᢨ', 8442 => 'ᢔ', 8443 => 'ᢣ', 8444 => 'ᢕ', 8445 => 'ᢙ', 8446 => 'ᢖ', 8447 => 'ᢗ', 8448 => 'ᢦ', 8449 => 'ᢧ', 8450 => 'ᢪ', 8451 => 'ᱚ', 8452 => 'ᱛ', 8453 => 'ᱜ', 8454 => 'ᱝ', 8455 => 'ᱞ', 8456 => 'ᱟ', 8457 => 'ᱠ', 8458 => 'ᱡ', 8459 => 'ᱢ', 8460 => 'ᱣ', 8461 => 'ᱤ', 8462 => 'ᱥ', 8463 => 'ᱦ', 8464 => 'ᱧ', 8465 => 'ᱨ', 8466 => 'ᱩ', 8467 => 'ᱪ', 8468 => 'ᱫ', 8469 => 'ᱬ', 8470 => 'ᱭ', 8471 => 'ᱮ', 8472 => 'ᱯ', 8473 => 'ᱰ', 8474 => 'ᱱ', 8475 => 'ᱲ', 8476 => 'ᱳ', 8477 => 'ᱴ', 8478 => 'ᱵ', 8479 => 'ᱶ', 8480 => 'ᱷ', 8481 => 'ᱸ', 8482 => 'ᱹ', 8483 => 'ᱺ', 8484 => 'ᱻ', 8485 => 'ᱼ', 8486 => 'ᱽ', 8487 => 'Ꭰ', 8488 => 'Ꭱ', 8489 => 'Ꭲ', 8490 => 'Ꭳ', 8491 => 'Ꭴ', 8492 => 'Ꭵ', 8493 => 'Ꭶ', 8494 => 'Ꭷ', 8495 => 'Ꭸ', 8496 => 'Ꭹ', 8497 => 'Ꭺ', 8498 => 'Ꭻ', 8499 => 'Ꭼ', 8500 => 'Ꭽ', 8501 => 'Ꭾ', 8502 => 'Ꭿ', 8503 => 'Ꮀ', 8504 => 'Ꮁ', 8505 => 'Ꮂ', 8506 => 'Ꮃ', 8507 => 'Ꮄ', 8508 => 'Ꮅ', 8509 => 'Ꮆ', 8510 => 'Ꮇ', 8511 => 'Ꮈ', 8512 => 'Ꮉ', 8513 => 'Ꮊ', 8514 => 'Ꮋ', 8515 => 'Ꮌ', 8516 => 'Ꮍ', 8517 => 'Ꮎ', 8518 => 'Ꮏ', 8519 => 'Ꮐ', 8520 => 'Ꮑ', 8521 => 'Ꮒ', 8522 => 'Ꮓ', 8523 => 'Ꮔ', 8524 => 'Ꮕ', 8525 => 'Ꮖ', 8526 => 'Ꮗ', 8527 => 'Ꮘ', 8528 => 'Ꮙ', 8529 => 'Ꮚ', 8530 => 'Ꮛ', 8531 => 'Ꮜ', 8532 => 'Ꮝ', 8533 => 'Ꮞ', 8534 => 'Ꮟ', 8535 => 'Ꮠ', 8536 => 'Ꮡ', 8537 => 'Ꮢ', 8538 => 'Ꮣ', 8539 => 'Ꮤ', 8540 => 'Ꮥ', 8541 => 'Ꮦ', 8542 => 'Ꮧ', 8543 => 'Ꮨ', 8544 => 'Ꮩ', 8545 => 'Ꮪ', 8546 => 'Ꮫ', 8547 => 'Ꮬ', 8548 => 'Ꮭ', 8549 => 'Ꮮ', 8550 => 'Ꮯ', 8551 => 'Ꮰ', 8552 => 'Ꮱ', 8553 => 'Ꮲ', 8554 => 'Ꮳ', 8555 => 'Ꮴ', 8556 => 'Ꮵ', 8557 => 'Ꮶ', 8558 => 'Ꮷ', 8559 => 'Ꮸ', 8560 => 'Ꮹ', 8561 => 'Ꮺ', 8562 => 'Ꮻ', 8563 => 'Ꮼ', 8564 => 'Ꮽ', 8565 => 'Ꮾ', 8566 => 'Ꮿ', 8567 => 'Ᏸ', 8568 => 'Ᏹ', 8569 => 'Ᏺ', 8570 => 'Ᏻ', 8571 => 'Ᏼ', 8572 => 'ᐁ', 8573 => 'ᐂ', 8574 => 'ᐃ', 8575 => 'ᐄ', 8576 => 'ᐅ', 8577 => 'ᐆ', 8578 => 'ᐇ', 8579 => 'ᐈ', 8580 => 'ᐉ', 8581 => 'ᐊ', 8582 => 'ᐋ', 8583 => 'ᐌ', 8584 => 'ᐍ', 8585 => 'ᐎ', 8586 => 'ᐏ', 8587 => 'ᐐ', 8588 => 'ᐑ', 8589 => 'ᐒ', 8590 => 'ᐓ', 8591 => 'ᐔ', 8592 => 'ᐕ', 8593 => 'ᐖ', 8594 => 'ᐗ', 8595 => 'ᐘ', 8596 => 'ᐙ', 8597 => 'ᐚ', 8598 => 'ᐛ', 8599 => 'ᐜ', 8600 => 'ᐝ', 8601 => 'ᐞ', 8602 => 'ᐟ', 8603 => 'ᐠ', 8604 => 'ᐡ', 8605 => 'ᐢ', 8606 => 'ᐣ', 8607 => 'ᐤ', 8608 => 'ᐥ', 8609 => 'ᐦ', 8610 => 'ᐧ', 8611 => 'ᐨ', 8612 => 'ᐩ', 8613 => 'ᐪ', 8614 => 'ᐫ', 8615 => 'ᐬ', 8616 => 'ᐭ', 8617 => 'ᐮ', 8618 => 'ᐯ', 8619 => 'ᐰ', 8620 => 'ᐱ', 8621 => 'ᐲ', 8622 => 'ᐳ', 8623 => 'ᐴ', 8624 => 'ᐵ', 8625 => 'ᐶ', 8626 => 'ᐷ', 8627 => 'ᐸ', 8628 => 'ᐹ', 8629 => 'ᐺ', 8630 => 'ᐻ', 8631 => 'ᐼ', 8632 => 'ᐽ', 8633 => 'ᐾ', 8634 => 'ᐿ', 8635 => 'ᑀ', 8636 => 'ᑁ', 8637 => 'ᑂ', 8638 => 'ᑃ', 8639 => 'ᑄ', 8640 => 'ᑅ', 8641 => 'ᑆ', 8642 => 'ᑇ', 8643 => 'ᑈ', 8644 => 'ᑉ', 8645 => 'ᑊ', 8646 => 'ᑋ', 8647 => 'ᑌ', 8648 => 'ᑍ', 8649 => 'ᑎ', 8650 => 'ᑏ', 8651 => 'ᑐ', 8652 => 'ᑑ', 8653 => 'ᑒ', 8654 => 'ᑓ', 8655 => 'ᑔ', 8656 => 'ᑕ', 8657 => 'ᑖ', 8658 => 'ᑗ', 8659 => 'ᑘ', 8660 => 'ᑙ', 8661 => 'ᑚ', 8662 => 'ᑛ', 8663 => 'ᑜ', 8664 => 'ᑝ', 8665 => 'ᑞ', 8666 => 'ᑟ', 8667 => 'ᑠ', 8668 => 'ᑡ', 8669 => 'ᑢ', 8670 => 'ᑣ', 8671 => 'ᑤ', 8672 => 'ᑥ', 8673 => 'ᑦ', 8674 => 'ᑧ', 8675 => 'ᑨ', 8676 => 'ᑩ', 8677 => 'ᑪ', 8678 => 'ᑫ', 8679 => 'ᑬ', 8680 => 'ᑭ', 8681 => 'ᑮ', 8682 => 'ᑯ', 8683 => 'ᑰ', 8684 => 'ᑱ', 8685 => 'ᑲ', 8686 => 'ᑳ', 8687 => 'ᑴ', 8688 => 'ᑵ', 8689 => 'ᑶ', 8690 => 'ᑷ', 8691 => 'ᑸ', 8692 => 'ᑹ', 8693 => 'ᑺ', 8694 => 'ᑻ', 8695 => 'ᑼ', 8696 => 'ᑽ', 8697 => 'ᑾ', 8698 => 'ᑿ', 8699 => 'ᒀ', 8700 => 'ᒁ', 8701 => 'ᒂ', 8702 => 'ᒃ', 8703 => 'ᒄ', 8704 => 'ᒅ', 8705 => 'ᒆ', 8706 => 'ᒇ', 8707 => 'ᒈ', 8708 => 'ᒉ', 8709 => 'ᒊ', 8710 => 'ᒋ', 8711 => 'ᒌ', 8712 => 'ᒍ', 8713 => 'ᒎ', 8714 => 'ᒏ', 8715 => 'ᒐ', 8716 => 'ᒑ', 8717 => 'ᒒ', 8718 => 'ᒓ', 8719 => 'ᒔ', 8720 => 'ᒕ', 8721 => 'ᒖ', 8722 => 'ᒗ', 8723 => 'ᒘ', 8724 => 'ᒙ', 8725 => 'ᒚ', 8726 => 'ᒛ', 8727 => 'ᒜ', 8728 => 'ᒝ', 8729 => 'ᒞ', 8730 => 'ᒟ', 8731 => 'ᒠ', 8732 => 'ᒡ', 8733 => 'ᒢ', 8734 => 'ᒣ', 8735 => 'ᒤ', 8736 => 'ᒥ', 8737 => 'ᒦ', 8738 => 'ᒧ', 8739 => 'ᒨ', 8740 => 'ᒩ', 8741 => 'ᒪ', 8742 => 'ᒫ', 8743 => 'ᒬ', 8744 => 'ᒭ', 8745 => 'ᒮ', 8746 => 'ᒯ', 8747 => 'ᒰ', 8748 => 'ᒱ', 8749 => 'ᒲ', 8750 => 'ᒳ', 8751 => 'ᒴ', 8752 => 'ᒵ', 8753 => 'ᒶ', 8754 => 'ᒷ', 8755 => 'ᒸ', 8756 => 'ᒹ', 8757 => 'ᒺ', 8758 => 'ᒻ', 8759 => 'ᒼ', 8760 => 'ᒽ', 8761 => 'ᒾ', 8762 => 'ᒿ', 8763 => 'ᓀ', 8764 => 'ᓁ', 8765 => 'ᓂ', 8766 => 'ᓃ', 8767 => 'ᓄ', 8768 => 'ᓅ', 8769 => 'ᓆ', 8770 => 'ᓇ', 8771 => 'ᓈ', 8772 => 'ᓉ', 8773 => 'ᓊ', 8774 => 'ᓋ', 8775 => 'ᓌ', 8776 => 'ᓍ', 8777 => 'ᓎ', 8778 => 'ᓏ', 8779 => 'ᓐ', 8780 => 'ᓑ', 8781 => 'ᓒ', 8782 => 'ᓓ', 8783 => 'ᓔ', 8784 => 'ᓕ', 8785 => 'ᓖ', 8786 => 'ᓗ', 8787 => 'ᓘ', 8788 => 'ᓙ', 8789 => 'ᓚ', 8790 => 'ᓛ', 8791 => 'ᓜ', 8792 => 'ᓝ', 8793 => 'ᓞ', 8794 => 'ᓟ', 8795 => 'ᓠ', 8796 => 'ᓡ', 8797 => 'ᓢ', 8798 => 'ᓣ', 8799 => 'ᓤ', 8800 => 'ᓥ', 8801 => 'ᓦ', 8802 => 'ᓧ', 8803 => 'ᓨ', 8804 => 'ᓩ', 8805 => 'ᓪ', 8806 => 'ᓫ', 8807 => 'ᓬ', 8808 => 'ᓭ', 8809 => 'ᓮ', 8810 => 'ᓯ', 8811 => 'ᓰ', 8812 => 'ᓱ', 8813 => 'ᓲ', 8814 => 'ᓳ', 8815 => 'ᓴ', 8816 => 'ᓵ', 8817 => 'ᓶ', 8818 => 'ᓷ', 8819 => 'ᓸ', 8820 => 'ᓹ', 8821 => 'ᓺ', 8822 => 'ᓻ', 8823 => 'ᓼ', 8824 => 'ᓽ', 8825 => 'ᓾ', 8826 => 'ᓿ', 8827 => 'ᔀ', 8828 => 'ᔁ', 8829 => 'ᔂ', 8830 => 'ᔃ', 8831 => 'ᔄ', 8832 => 'ᔅ', 8833 => 'ᔆ', 8834 => 'ᔇ', 8835 => 'ᔈ', 8836 => 'ᔉ', 8837 => 'ᔊ', 8838 => 'ᔋ', 8839 => 'ᔌ', 8840 => 'ᔍ', 8841 => 'ᔎ', 8842 => 'ᔏ', 8843 => 'ᔐ', 8844 => 'ᔑ', 8845 => 'ᔒ', 8846 => 'ᔓ', 8847 => 'ᔔ', 8848 => 'ᔕ', 8849 => 'ᔖ', 8850 => 'ᔗ', 8851 => 'ᔘ', 8852 => 'ᔙ', 8853 => 'ᔚ', 8854 => 'ᔛ', 8855 => 'ᔜ', 8856 => 'ᔝ', 8857 => 'ᔞ', 8858 => 'ᔟ', 8859 => 'ᔠ', 8860 => 'ᔡ', 8861 => 'ᔢ', 8862 => 'ᔣ', 8863 => 'ᔤ', 8864 => 'ᔥ', 8865 => 'ᔦ', 8866 => 'ᔧ', 8867 => 'ᔨ', 8868 => 'ᔩ', 8869 => 'ᔪ', 8870 => 'ᔫ', 8871 => 'ᔬ', 8872 => 'ᔭ', 8873 => 'ᔮ', 8874 => 'ᔯ', 8875 => 'ᔰ', 8876 => 'ᔱ', 8877 => 'ᔲ', 8878 => 'ᔳ', 8879 => 'ᔴ', 8880 => 'ᔵ', 8881 => 'ᔶ', 8882 => 'ᔷ', 8883 => 'ᔸ', 8884 => 'ᔹ', 8885 => 'ᔺ', 8886 => 'ᔻ', 8887 => 'ᔼ', 8888 => 'ᔽ', 8889 => 'ᔾ', 8890 => 'ᔿ', 8891 => 'ᕀ', 8892 => 'ᕁ', 8893 => 'ᕂ', 8894 => 'ᕃ', 8895 => 'ᕄ', 8896 => 'ᕅ', 8897 => 'ᕆ', 8898 => 'ᕇ', 8899 => 'ᕈ', 8900 => 'ᕉ', 8901 => 'ᕊ', 8902 => 'ᕋ', 8903 => 'ᕌ', 8904 => 'ᕍ', 8905 => 'ᕎ', 8906 => 'ᕏ', 8907 => 'ᕐ', 8908 => 'ᕑ', 8909 => 'ᕒ', 8910 => 'ᕓ', 8911 => 'ᕔ', 8912 => 'ᕕ', 8913 => 'ᕖ', 8914 => 'ᕗ', 8915 => 'ᕘ', 8916 => 'ᕙ', 8917 => 'ᕚ', 8918 => 'ᕛ', 8919 => 'ᕜ', 8920 => 'ᕝ', 8921 => 'ᕞ', 8922 => 'ᕟ', 8923 => 'ᕠ', 8924 => 'ᕡ', 8925 => 'ᕢ', 8926 => 'ᕣ', 8927 => 'ᕤ', 8928 => 'ᕥ', 8929 => 'ᕦ', 8930 => 'ᕧ', 8931 => 'ᕨ', 8932 => 'ᕩ', 8933 => 'ᕪ', 8934 => 'ᕫ', 8935 => 'ᕬ', 8936 => 'ᕭ', 8937 => 'ᕮ', 8938 => 'ᕯ', 8939 => 'ᕰ', 8940 => 'ᕱ', 8941 => 'ᕲ', 8942 => 'ᕳ', 8943 => 'ᕴ', 8944 => 'ᕵ', 8945 => 'ᕶ', 8946 => 'ᕷ', 8947 => 'ᕸ', 8948 => 'ᕹ', 8949 => 'ᕺ', 8950 => 'ᕻ', 8951 => 'ᕽ', 8952 => 'ᙯ', 8953 => 'ᕾ', 8954 => 'ᕿ', 8955 => 'ᖀ', 8956 => 'ᖁ', 8957 => 'ᖂ', 8958 => 'ᖃ', 8959 => 'ᖄ', 8960 => 'ᖅ', 8961 => 'ᖆ', 8962 => 'ᖇ', 8963 => 'ᖈ', 8964 => 'ᖉ', 8965 => 'ᖊ', 8966 => 'ᖋ', 8967 => 'ᖌ', 8968 => 'ᖍ', 8969 => 'ᙰ', 8970 => 'ᖎ', 8971 => 'ᖏ', 8972 => 'ᖐ', 8973 => 'ᖑ', 8974 => 'ᖒ', 8975 => 'ᖓ', 8976 => 'ᖔ', 8977 => 'ᖕ', 8978 => 'ᙱ', 8979 => 'ᙲ', 8980 => 'ᙳ', 8981 => 'ᙴ', 8982 => 'ᙵ', 8983 => 'ᙶ', 8984 => 'ᖖ', 8985 => 'ᖗ', 8986 => 'ᖘ', 8987 => 'ᖙ', 8988 => 'ᖚ', 8989 => 'ᖛ', 8990 => 'ᖜ', 8991 => 'ᖝ', 8992 => 'ᖞ', 8993 => 'ᖟ', 8994 => 'ᖠ', 8995 => 'ᖡ', 8996 => 'ᖢ', 8997 => 'ᖣ', 8998 => 'ᖤ', 8999 => 'ᖥ', 9000 => 'ᖦ', 9001 => 'ᕼ', 9002 => 'ᖧ', 9003 => 'ᖨ', 9004 => 'ᖩ', 9005 => 'ᖪ', 9006 => 'ᖫ', 9007 => 'ᖬ', 9008 => 'ᖭ', 9009 => 'ᖮ', 9010 => 'ᖯ', 9011 => 'ᖰ', 9012 => 'ᖱ', 9013 => 'ᖲ', 9014 => 'ᖳ', 9015 => 'ᖴ', 9016 => 'ᖵ', 9017 => 'ᖶ', 9018 => 'ᖷ', 9019 => 'ᖸ', 9020 => 'ᖹ', 9021 => 'ᖺ', 9022 => 'ᖻ', 9023 => 'ᖼ', 9024 => 'ᖽ', 9025 => 'ᖾ', 9026 => 'ᖿ', 9027 => 'ᗀ', 9028 => 'ᗁ', 9029 => 'ᗂ', 9030 => 'ᗃ', 9031 => 'ᗄ', 9032 => 'ᗅ', 9033 => 'ᗆ', 9034 => 'ᗇ', 9035 => 'ᗈ', 9036 => 'ᗉ', 9037 => 'ᗊ', 9038 => 'ᗋ', 9039 => 'ᗌ', 9040 => 'ᗍ', 9041 => 'ᗎ', 9042 => 'ᗏ', 9043 => 'ᗐ', 9044 => 'ᗑ', 9045 => 'ᗒ', 9046 => 'ᗓ', 9047 => 'ᗔ', 9048 => 'ᗕ', 9049 => 'ᗖ', 9050 => 'ᗗ', 9051 => 'ᗘ', 9052 => 'ᗙ', 9053 => 'ᗚ', 9054 => 'ᗛ', 9055 => 'ᗜ', 9056 => 'ᗝ', 9057 => 'ᗞ', 9058 => 'ᗟ', 9059 => 'ᗠ', 9060 => 'ᗡ', 9061 => 'ᗢ', 9062 => 'ᗣ', 9063 => 'ᗤ', 9064 => 'ᗥ', 9065 => 'ᗦ', 9066 => 'ᗧ', 9067 => 'ᗨ', 9068 => 'ᗩ', 9069 => 'ᗪ', 9070 => 'ᗫ', 9071 => 'ᗬ', 9072 => 'ᗭ', 9073 => 'ᗮ', 9074 => 'ᗯ', 9075 => 'ᗰ', 9076 => 'ᗱ', 9077 => 'ᗲ', 9078 => 'ᗳ', 9079 => 'ᗴ', 9080 => 'ᗵ', 9081 => 'ᗶ', 9082 => 'ᗷ', 9083 => 'ᗸ', 9084 => 'ᗹ', 9085 => 'ᗺ', 9086 => 'ᗻ', 9087 => 'ᗼ', 9088 => 'ᗽ', 9089 => 'ᗾ', 9090 => 'ᗿ', 9091 => 'ᘀ', 9092 => 'ᘁ', 9093 => 'ᘂ', 9094 => 'ᘃ', 9095 => 'ᘄ', 9096 => 'ᘅ', 9097 => 'ᘆ', 9098 => 'ᘇ', 9099 => 'ᘈ', 9100 => 'ᘉ', 9101 => 'ᘊ', 9102 => 'ᘋ', 9103 => 'ᘌ', 9104 => 'ᘍ', 9105 => 'ᘎ', 9106 => 'ᘏ', 9107 => 'ᘐ', 9108 => 'ᘑ', 9109 => 'ᘒ', 9110 => 'ᘓ', 9111 => 'ᘔ', 9112 => 'ᘕ', 9113 => 'ᘖ', 9114 => 'ᘗ', 9115 => 'ᘘ', 9116 => 'ᘙ', 9117 => 'ᘚ', 9118 => 'ᘛ', 9119 => 'ᘜ', 9120 => 'ᘝ', 9121 => 'ᘞ', 9122 => 'ᘟ', 9123 => 'ᘠ', 9124 => 'ᘡ', 9125 => 'ᘢ', 9126 => 'ᘣ', 9127 => 'ᘤ', 9128 => 'ᘥ', 9129 => 'ᘦ', 9130 => 'ᘧ', 9131 => 'ᘨ', 9132 => 'ᘩ', 9133 => 'ᘪ', 9134 => 'ᘫ', 9135 => 'ᘬ', 9136 => 'ᘭ', 9137 => 'ᘮ', 9138 => 'ᘯ', 9139 => 'ᘰ', 9140 => 'ᘱ', 9141 => 'ᘲ', 9142 => 'ᘳ', 9143 => 'ᘴ', 9144 => 'ᘵ', 9145 => 'ᘶ', 9146 => 'ᘷ', 9147 => 'ᘸ', 9148 => 'ᘹ', 9149 => 'ᘺ', 9150 => 'ᘻ', 9151 => 'ᘼ', 9152 => 'ᘽ', 9153 => 'ᘾ', 9154 => 'ᘿ', 9155 => 'ᙀ', 9156 => 'ᙁ', 9157 => 'ᙂ', 9158 => 'ᙃ', 9159 => 'ᙄ', 9160 => 'ᙅ', 9161 => 'ᙆ', 9162 => 'ᙇ', 9163 => 'ᙈ', 9164 => 'ᙉ', 9165 => 'ᙊ', 9166 => 'ᙋ', 9167 => 'ᙌ', 9168 => 'ᙍ', 9169 => 'ᙎ', 9170 => 'ᙏ', 9171 => 'ᙐ', 9172 => 'ᙑ', 9173 => 'ᙒ', 9174 => 'ᙓ', 9175 => 'ᙔ', 9176 => 'ᙕ', 9177 => 'ᙖ', 9178 => 'ᙗ', 9179 => 'ᙘ', 9180 => 'ᙙ', 9181 => 'ᙚ', 9182 => 'ᙛ', 9183 => 'ᙜ', 9184 => 'ᙝ', 9185 => 'ᙞ', 9186 => 'ᙟ', 9187 => 'ᙠ', 9188 => 'ᙡ', 9189 => 'ᙢ', 9190 => 'ᙣ', 9191 => 'ᙤ', 9192 => 'ᙥ', 9193 => 'ᙦ', 9194 => 'ᙧ', 9195 => 'ᙨ', 9196 => 'ᙩ', 9197 => 'ᙪ', 9198 => 'ᙫ', 9199 => 'ᙬ', 9200 => 'ᙷ', 9201 => 'ᙸ', 9202 => 'ᙹ', 9203 => 'ᙺ', 9204 => 'ᙻ', 9205 => 'ᙼ', 9206 => 'ᙽ', 9207 => 'ᙾ', 9208 => 'ᙿ', 9209 => 'ᢰ', 9210 => 'ᢱ', 9211 => 'ᢲ', 9212 => 'ᢳ', 9213 => 'ᢴ', 9214 => 'ᢵ', 9215 => 'ᢶ', 9216 => 'ᢷ', 9217 => 'ᢸ', 9218 => 'ᢹ', 9219 => 'ᢺ', 9220 => 'ᢻ', 9221 => 'ᢼ', 9222 => 'ᢽ', 9223 => 'ᢾ', 9224 => 'ᢿ', 9225 => 'ᣀ', 9226 => 'ᣁ', 9227 => 'ᣂ', 9228 => 'ᣃ', 9229 => 'ᣄ', 9230 => 'ᣅ', 9231 => 'ᣆ', 9232 => 'ᣇ', 9233 => 'ᣈ', 9234 => 'ᣉ', 9235 => 'ᣊ', 9236 => 'ᣋ', 9237 => 'ᣌ', 9238 => 'ᣍ', 9239 => 'ᣎ', 9240 => 'ᣏ', 9241 => 'ᣐ', 9242 => 'ᣑ', 9243 => 'ᣒ', 9244 => 'ᣓ', 9245 => 'ᣔ', 9246 => 'ᣕ', 9247 => 'ᣖ', 9248 => 'ᣗ', 9249 => 'ᣘ', 9250 => 'ᣙ', 9251 => 'ᣚ', 9252 => 'ᣛ', 9253 => 'ᣜ', 9254 => 'ᣝ', 9255 => 'ᣞ', 9256 => 'ᣟ', 9257 => 'ᣠ', 9258 => 'ᣡ', 9259 => 'ᣢ', 9260 => 'ᣣ', 9261 => 'ᣤ', 9262 => 'ᣥ', 9263 => 'ᣦ', 9264 => 'ᣧ', 9265 => 'ᣨ', 9266 => 'ᣩ', 9267 => 'ᣪ', 9268 => 'ᣫ', 9269 => 'ᣬ', 9270 => 'ᣭ', 9271 => 'ᣮ', 9272 => 'ᣯ', 9273 => 'ᣰ', 9274 => 'ᣱ', 9275 => 'ᣲ', 9276 => 'ᣳ', 9277 => 'ᣴ', 9278 => 'ᣵ', 9279 => 'ᚁ', 9280 => 'ᚂ', 9281 => 'ᚃ', 9282 => 'ᚄ', 9283 => 'ᚅ', 9284 => 'ᚆ', 9285 => 'ᚇ', 9286 => 'ᚈ', 9287 => 'ᚉ', 9288 => 'ᚊ', 9289 => 'ᚋ', 9290 => 'ᚌ', 9291 => 'ᚍ', 9292 => 'ᚎ', 9293 => 'ᚏ', 9294 => 'ᚐ', 9295 => 'ᚑ', 9296 => 'ᚒ', 9297 => 'ᚓ', 9298 => 'ᚔ', 9299 => 'ᚕ', 9300 => 'ᚖ', 9301 => 'ᚗ', 9302 => 'ᚘ', 9303 => 'ᚙ', 9304 => 'ᚚ', 9305 => 'ᚠ', 9306 => 'ᚢ', 9307 => 'ᚦ', 9308 => 'ᚨ', 9309 => 'ᚯ', 9310 => 'ᚰ', 9311 => 'ᚱ', 9312 => 'ᚲ', 9313 => 'ᚷ', 9314 => 'ᚹ', 9315 => 'ᚺ', 9316 => 'ᚾ', 9317 => 'ᛁ', 9318 => 'ᛃ', 9319 => 'ᛅ', 9320 => 'ᛇ', 9321 => 'ᛈ', 9322 => 'ᛉ', 9323 => 'ᛊ', 9324 => 'ᛏ', 9325 => 'ᛒ', 9326 => 'ᛖ', 9327 => 'ᛗ', 9328 => 'ᛚ', 9329 => 'ᛜ', 9330 => 'ᛞ', 9331 => 'ᛟ', 9332 => 'ᚪ', 9333 => 'ᚫ', 9334 => 'ᚣ', 9335 => 'ᛠ', 9336 => 'ᛣ', 9337 => 'ᚸ', 9338 => 'ᛤ', 9339 => 'ᛡ', 9340 => 'ᛢ', 9341 => 'ᛥ', 9342 => 'ᛦ', 9343 => '𐰀', 9344 => '𐰂', 9345 => '𐰃', 9346 => '𐰅', 9347 => '𐰆', 9348 => '𐰇', 9349 => '𐰉', 9350 => '𐰋', 9351 => '𐰍', 9352 => '𐰏', 9353 => '𐰑', 9354 => '𐰓', 9355 => '𐰔', 9356 => '𐰖', 9357 => '𐰘', 9358 => '𐰚', 9359 => '𐰜', 9360 => '𐰞', 9361 => '𐰠', 9362 => '𐰡', 9363 => '𐰢', 9364 => '𐰣', 9365 => '𐰤', 9366 => '𐰦', 9367 => '𐰨', 9368 => '𐰪', 9369 => '𐰬', 9370 => '𐰭', 9371 => '𐰯', 9372 => '𐰰', 9373 => '𐰱', 9374 => '𐰲', 9375 => '𐰴', 9376 => '𐰶', 9377 => '𐰸', 9378 => '𐰺', 9379 => '𐰼', 9380 => '𐰽', 9381 => '𐰾', 9382 => '𐰿', 9383 => '𐱁', 9384 => '𐱃', 9385 => '𐱅', 9386 => '𐱇', 9387 => '𐱈', 9388 => 'ꔀ', 9389 => 'ꔁ', 9390 => 'ꔂ', 9391 => 'ꔃ', 9392 => 'ꔄ', 9393 => 'ꔅ', 9394 => 'ꔆ', 9395 => 'ꔇ', 9396 => 'ꔈ', 9397 => 'ꔉ', 9398 => 'ꔊ', 9399 => 'ꔋ', 9400 => 'ꔌ', 9401 => 'ꔍ', 9402 => 'ꔎ', 9403 => 'ꔏ', 9404 => 'ꔐ', 9405 => 'ꔑ', 9406 => 'ꔒ', 9407 => 'ꔓ', 9408 => 'ꔔ', 9409 => 'ꔕ', 9410 => 'ꔖ', 9411 => 'ꔗ', 9412 => 'ꔘ', 9413 => 'ꔙ', 9414 => 'ꔚ', 9415 => 'ꔛ', 9416 => 'ꔜ', 9417 => 'ꔝ', 9418 => 'ꔞ', 9419 => 'ꔟ', 9420 => 'ꔠ', 9421 => 'ꔡ', 9422 => 'ꔢ', 9423 => 'ꔣ', 9424 => 'ꔤ', 9425 => 'ꔥ', 9426 => 'ꔦ', 9427 => 'ꔧ', 9428 => 'ꔨ', 9429 => 'ꔩ', 9430 => 'ꔪ', 9431 => 'ꔫ', 9432 => 'ꔬ', 9433 => 'ꔭ', 9434 => 'ꔮ', 9435 => 'ꔯ', 9436 => 'ꔰ', 9437 => 'ꔱ', 9438 => 'ꔲ', 9439 => 'ꔳ', 9440 => 'ꔴ', 9441 => 'ꔵ', 9442 => 'ꔶ', 9443 => 'ꔷ', 9444 => 'ꔸ', 9445 => 'ꔹ', 9446 => 'ꔺ', 9447 => 'ꔻ', 9448 => 'ꔼ', 9449 => 'ꔽ', 9450 => 'ꔾ', 9451 => 'ꔿ', 9452 => 'ꕀ', 9453 => 'ꕁ', 9454 => 'ꕂ', 9455 => 'ꕃ', 9456 => 'ꕄ', 9457 => 'ꕅ', 9458 => 'ꕆ', 9459 => 'ꕇ', 9460 => 'ꕈ', 9461 => 'ꕉ', 9462 => 'ꕊ', 9463 => 'ꕋ', 9464 => 'ꕌ', 9465 => 'ꕍ', 9466 => 'ꕎ', 9467 => 'ꕏ', 9468 => 'ꕐ', 9469 => 'ꕑ', 9470 => 'ꕒ', 9471 => 'ꕓ', 9472 => 'ꕔ', 9473 => 'ꕕ', 9474 => 'ꕖ', 9475 => 'ꕗ', 9476 => 'ꕘ', 9477 => 'ꕙ', 9478 => 'ꕚ', 9479 => 'ꕛ', 9480 => 'ꕜ', 9481 => 'ꕝ', 9482 => 'ꕞ', 9483 => 'ꕟ', 9484 => 'ꕠ', 9485 => 'ꕡ', 9486 => 'ꕢ', 9487 => 'ꕣ', 9488 => 'ꕤ', 9489 => 'ꕥ', 9490 => 'ꕦ', 9491 => 'ꕧ', 9492 => 'ꕨ', 9493 => 'ꕩ', 9494 => 'ꕪ', 9495 => 'ꕫ', 9496 => 'ꕬ', 9497 => 'ꕭ', 9498 => 'ꕮ', 9499 => 'ꕯ', 9500 => 'ꕰ', 9501 => 'ꕱ', 9502 => 'ꕲ', 9503 => 'ꕳ', 9504 => 'ꕴ', 9505 => 'ꕵ', 9506 => 'ꕶ', 9507 => 'ꕷ', 9508 => 'ꕸ', 9509 => 'ꕹ', 9510 => 'ꕺ', 9511 => 'ꕻ', 9512 => 'ꕼ', 9513 => 'ꕽ', 9514 => 'ꕾ', 9515 => 'ꕿ', 9516 => 'ꖀ', 9517 => 'ꖁ', 9518 => 'ꖂ', 9519 => 'ꖃ', 9520 => 'ꖄ', 9521 => 'ꖅ', 9522 => 'ꖆ', 9523 => 'ꖇ', 9524 => 'ꖈ', 9525 => 'ꖉ', 9526 => 'ꖊ', 9527 => 'ꖋ', 9528 => 'ꖌ', 9529 => 'ꖍ', 9530 => 'ꖎ', 9531 => 'ꖏ', 9532 => 'ꖐ', 9533 => 'ꖑ', 9534 => 'ꖒ', 9535 => 'ꖓ', 9536 => 'ꖔ', 9537 => 'ꖕ', 9538 => 'ꖖ', 9539 => 'ꖗ', 9540 => 'ꖘ', 9541 => 'ꖙ', 9542 => 'ꖚ', 9543 => 'ꖛ', 9544 => 'ꖜ', 9545 => 'ꖝ', 9546 => 'ꖞ', 9547 => 'ꖟ', 9548 => 'ꖠ', 9549 => 'ꖡ', 9550 => 'ꖢ', 9551 => 'ꖣ', 9552 => 'ꖤ', 9553 => 'ꖥ', 9554 => 'ꖦ', 9555 => 'ꖧ', 9556 => 'ꖨ', 9557 => 'ꖩ', 9558 => 'ꖪ', 9559 => 'ꖫ', 9560 => 'ꖬ', 9561 => 'ꖭ', 9562 => 'ꖮ', 9563 => 'ꖯ', 9564 => 'ꖰ', 9565 => 'ꖱ', 9566 => 'ꖲ', 9567 => 'ꖳ', 9568 => 'ꖴ', 9569 => 'ꖵ', 9570 => 'ꖶ', 9571 => 'ꖷ', 9572 => 'ꖸ', 9573 => 'ꖹ', 9574 => 'ꖺ', 9575 => 'ꖻ', 9576 => 'ꖼ', 9577 => 'ꖽ', 9578 => 'ꖾ', 9579 => 'ꖿ', 9580 => 'ꗀ', 9581 => 'ꗁ', 9582 => 'ꗂ', 9583 => 'ꗃ', 9584 => 'ꗄ', 9585 => 'ꗅ', 9586 => 'ꗆ', 9587 => 'ꗇ', 9588 => 'ꗈ', 9589 => 'ꗉ', 9590 => 'ꗊ', 9591 => 'ꗋ', 9592 => 'ꗌ', 9593 => 'ꗍ', 9594 => 'ꗎ', 9595 => 'ꗏ', 9596 => 'ꗐ', 9597 => 'ꗑ', 9598 => 'ꗒ', 9599 => 'ꗓ', 9600 => 'ꗔ', 9601 => 'ꗕ', 9602 => 'ꗖ', 9603 => 'ꗗ', 9604 => 'ꗘ', 9605 => 'ꗙ', 9606 => 'ꗚ', 9607 => 'ꗛ', 9608 => 'ꗜ', 9609 => 'ꗝ', 9610 => 'ꗞ', 9611 => 'ꗟ', 9612 => 'ꗠ', 9613 => 'ꗡ', 9614 => 'ꗢ', 9615 => 'ꗣ', 9616 => 'ꗤ', 9617 => 'ꗥ', 9618 => 'ꗦ', 9619 => 'ꗧ', 9620 => 'ꗨ', 9621 => 'ꗩ', 9622 => 'ꗪ', 9623 => 'ꗫ', 9624 => 'ꗬ', 9625 => 'ꗭ', 9626 => 'ꗮ', 9627 => 'ꗯ', 9628 => 'ꗰ', 9629 => 'ꗱ', 9630 => 'ꗲ', 9631 => 'ꗳ', 9632 => 'ꗴ', 9633 => 'ꗵ', 9634 => 'ꗶ', 9635 => 'ꗷ', 9636 => 'ꗸ', 9637 => 'ꗹ', 9638 => 'ꗺ', 9639 => 'ꗻ', 9640 => 'ꗼ', 9641 => 'ꗽ', 9642 => 'ꗾ', 9643 => 'ꗿ', 9644 => 'ꘀ', 9645 => 'ꘁ', 9646 => 'ꘂ', 9647 => 'ꘃ', 9648 => 'ꘄ', 9649 => 'ꘅ', 9650 => 'ꘆ', 9651 => 'ꘇ', 9652 => 'ꘈ', 9653 => 'ꘉ', 9654 => 'ꘊ', 9655 => 'ꘋ', 9656 => 'ꘌ', 9657 => 'ꚠ', 9658 => 'ꚡ', 9659 => 'ꚢ', 9660 => 'ꚣ', 9661 => 'ꚤ', 9662 => 'ꚥ', 9663 => 'ꚦ', 9664 => 'ꚧ', 9665 => 'ꚨ', 9666 => 'ꚩ', 9667 => 'ꚪ', 9668 => 'ꚫ', 9669 => 'ꚬ', 9670 => 'ꚭ', 9671 => 'ꚮ', 9672 => 'ꚯ', 9673 => 'ꚰ', 9674 => 'ꚱ', 9675 => 'ꚲ', 9676 => 'ꚳ', 9677 => 'ꚴ', 9678 => 'ꚵ', 9679 => 'ꚶ', 9680 => 'ꚷ', 9681 => 'ꚸ', 9682 => 'ꚹ', 9683 => 'ꚺ', 9684 => 'ꚻ', 9685 => 'ꚼ', 9686 => 'ꚽ', 9687 => 'ꚾ', 9688 => 'ꚿ', 9689 => 'ꛀ', 9690 => 'ꛁ', 9691 => 'ꛂ', 9692 => 'ꛃ', 9693 => 'ꛄ', 9694 => 'ꛅ', 9695 => 'ꛆ', 9696 => 'ꛇ', 9697 => 'ꛈ', 9698 => 'ꛉ', 9699 => 'ꛊ', 9700 => 'ꛋ', 9701 => 'ꛌ', 9702 => 'ꛍ', 9703 => 'ꛎ', 9704 => 'ꛏ', 9705 => 'ꛐ', 9706 => 'ꛑ', 9707 => 'ꛒ', 9708 => 'ꛓ', 9709 => 'ꛔ', 9710 => 'ꛕ', 9711 => 'ꛖ', 9712 => 'ꛗ', 9713 => 'ꛘ', 9714 => 'ꛙ', 9715 => 'ꛚ', 9716 => 'ꛛ', 9717 => 'ꛜ', 9718 => 'ꛝ', 9719 => 'ꛞ', 9720 => 'ꛟ', 9721 => 'ꛠ', 9722 => 'ꛡ', 9723 => 'ꛢ', 9724 => 'ꛣ', 9725 => 'ꛤ', 9726 => 'ꛥ', 9727 => 'ꛦ', 9728 => 'ꛧ', 9729 => 'ꛨ', 9730 => 'ꛩ', 9731 => 'ꛪ', 9732 => 'ꛫ', 9733 => 'ꛬ', 9734 => 'ꛭ', 9735 => 'ꛮ', 9736 => 'ꛯ', 9737 => '𖠀', 9738 => '𖠁', 9739 => '𖠂', 9740 => '𖠃', 9741 => '𖠄', 9742 => '𖠅', 9743 => '𖠆', 9744 => '𖠇', 9745 => '𖠈', 9746 => '𖠉', 9747 => '𖠊', 9748 => '𖠋', 9749 => '𖠌', 9750 => '𖠍', 9751 => '𖠎', 9752 => '𖠏', 9753 => '𖠐', 9754 => '𖠑', 9755 => '𖠒', 9756 => '𖠓', 9757 => '𖠔', 9758 => '𖠕', 9759 => '𖠖', 9760 => '𖠗', 9761 => '𖠘', 9762 => '𖠙', 9763 => '𖠚', 9764 => '𖠛', 9765 => '𖠜', 9766 => '𖠝', 9767 => '𖠞', 9768 => '𖠟', 9769 => '𖠠', 9770 => '𖠡', 9771 => '𖠢', 9772 => '𖠣', 9773 => '𖠤', 9774 => '𖠥', 9775 => '𖠦', 9776 => '𖠧', 9777 => '𖠨', 9778 => '𖠩', 9779 => '𖠪', 9780 => '𖠫', 9781 => '𖠬', 9782 => '𖠭', 9783 => '𖠮', 9784 => '𖠯', 9785 => '𖠰', 9786 => '𖠱', 9787 => '𖠲', 9788 => '𖠳', 9789 => '𖠴', 9790 => '𖠵', 9791 => '𖠶', 9792 => '𖠷', 9793 => '𖠸', 9794 => '𖠹', 9795 => '𖠺', 9796 => '𖠻', 9797 => '𖠼', 9798 => '𖠽', 9799 => '𖠾', 9800 => '𖠿', 9801 => '𖡀', 9802 => '𖡁', 9803 => '𖡂', 9804 => '𖡃', 9805 => '𖡄', 9806 => '𖡅', 9807 => '𖡆', 9808 => '𖡇', 9809 => '𖡈', 9810 => '𖡉', 9811 => '𖡊', 9812 => '𖡋', 9813 => '𖡌', 9814 => '𖡍', 9815 => '𖡎', 9816 => '𖡏', 9817 => '𖡐', 9818 => '𖡑', 9819 => '𖡒', 9820 => '𖡓', 9821 => '𖡔', 9822 => '𖡕', 9823 => '𖡖', 9824 => '𖡗', 9825 => '𖡘', 9826 => '𖡙', 9827 => '𖡚', 9828 => '𖡛', 9829 => '𖡜', 9830 => '𖡝', 9831 => '𖡞', 9832 => '𖡟', 9833 => '𖡠', 9834 => '𖡡', 9835 => '𖡢', 9836 => '𖡣', 9837 => '𖡤', 9838 => '𖡥', 9839 => '𖡦', 9840 => '𖡧', 9841 => '𖡨', 9842 => '𖡩', 9843 => '𖡪', 9844 => '𖡫', 9845 => '𖡬', 9846 => '𖡭', 9847 => '𖡮', 9848 => '𖡯', 9849 => '𖡰', 9850 => '𖡱', 9851 => '𖡲', 9852 => '𖡳', 9853 => '𖡴', 9854 => '𖡵', 9855 => '𖡶', 9856 => '𖡷', 9857 => '𖡸', 9858 => '𖡹', 9859 => '𖡺', 9860 => '𖡻', 9861 => '𖡼', 9862 => '𖡽', 9863 => '𖡾', 9864 => '𖡿', 9865 => '𖢀', 9866 => '𖢁', 9867 => '𖢂', 9868 => '𖢃', 9869 => '𖢄', 9870 => '𖢅', 9871 => '𖢆', 9872 => '𖢇', 9873 => '𖢈', 9874 => '𖢉', 9875 => '𖢊', 9876 => '𖢋', 9877 => '𖢌', 9878 => '𖢍', 9879 => '𖢎', 9880 => '𖢏', 9881 => '𖢐', 9882 => '𖢑', 9883 => '𖢒', 9884 => '𖢓', 9885 => '𖢔', 9886 => '𖢕', 9887 => '𖢖', 9888 => '𖢗', 9889 => '𖢘', 9890 => '𖢙', 9891 => '𖢚', 9892 => '𖢛', 9893 => '𖢜', 9894 => '𖢝', 9895 => '𖢞', 9896 => '𖢟', 9897 => '𖢠', 9898 => '𖢡', 9899 => '𖢢', 9900 => '𖢣', 9901 => '𖢤', 9902 => '𖢥', 9903 => '𖢦', 9904 => '𖢧', 9905 => '𖢨', 9906 => '𖢩', 9907 => '𖢪', 9908 => '𖢫', 9909 => '𖢬', 9910 => '𖢭', 9911 => '𖢮', 9912 => '𖢯', 9913 => '𖢰', 9914 => '𖢱', 9915 => '𖢲', 9916 => '𖢳', 9917 => '𖢴', 9918 => '𖢵', 9919 => '𖢶', 9920 => '𖢷', 9921 => '𖢸', 9922 => '𖢹', 9923 => '𖢺', 9924 => '𖢻', 9925 => '𖢼', 9926 => '𖢽', 9927 => '𖢾', 9928 => '𖢿', 9929 => '𖣀', 9930 => '𖣁', 9931 => '𖣂', 9932 => '𖣃', 9933 => '𖣄', 9934 => '𖣅', 9935 => '𖣆', 9936 => '𖣇', 9937 => '𖣈', 9938 => '𖣉', 9939 => '𖣊', 9940 => '𖣋', 9941 => '𖣌', 9942 => '𖣍', 9943 => '𖣎', 9944 => '𖣏', 9945 => '𖣐', 9946 => '𖣑', 9947 => '𖣒', 9948 => '𖣓', 9949 => '𖣔', 9950 => '𖣕', 9951 => '𖣖', 9952 => '𖣗', 9953 => '𖣘', 9954 => '𖣙', 9955 => '𖣚', 9956 => '𖣛', 9957 => '𖣜', 9958 => '𖣝', 9959 => '𖣞', 9960 => '𖣟', 9961 => '𖣠', 9962 => '𖣡', 9963 => '𖣢', 9964 => '𖣣', 9965 => '𖣤', 9966 => '𖣥', 9967 => '𖣦', 9968 => '𖣧', 9969 => '𖣨', 9970 => '𖣩', 9971 => '𖣪', 9972 => '𖣫', 9973 => '𖣬', 9974 => '𖣭', 9975 => '𖣮', 9976 => '𖣯', 9977 => '𖣰', 9978 => '𖣱', 9979 => '𖣲', 9980 => '𖣳', 9981 => '𖣴', 9982 => '𖣵', 9983 => '𖣶', 9984 => '𖣷', 9985 => '𖣸', 9986 => '𖣹', 9987 => '𖣺', 9988 => '𖣻', 9989 => '𖣼', 9990 => '𖣽', 9991 => '𖣾', 9992 => '𖣿', 9993 => '𖤀', 9994 => '𖤁', 9995 => '𖤂', 9996 => '𖤃', 9997 => '𖤄', 9998 => '𖤅', 9999 => '𖤆', 10000 => '𖤇', 10001 => '𖤈', 10002 => '𖤉', 10003 => '𖤊', 10004 => '𖤋', 10005 => '𖤌', 10006 => '𖤍', 10007 => '𖤎', 10008 => '𖤏', 10009 => '𖤐', 10010 => '𖤑', 10011 => '𖤒', 10012 => '𖤓', 10013 => '𖤔', 10014 => '𖤕', 10015 => '𖤖', 10016 => '𖤗', 10017 => '𖤘', 10018 => '𖤙', 10019 => '𖤚', 10020 => '𖤛', 10021 => '𖤜', 10022 => '𖤝', 10023 => '𖤞', 10024 => '𖤟', 10025 => '𖤠', 10026 => '𖤡', 10027 => '𖤢', 10028 => '𖤣', 10029 => '𖤤', 10030 => '𖤥', 10031 => '𖤦', 10032 => '𖤧', 10033 => '𖤨', 10034 => '𖤩', 10035 => '𖤪', 10036 => '𖤫', 10037 => '𖤬', 10038 => '𖤭', 10039 => '𖤮', 10040 => '𖤯', 10041 => '𖤰', 10042 => '𖤱', 10043 => '𖤲', 10044 => '𖤳', 10045 => '𖤴', 10046 => '𖤵', 10047 => '𖤶', 10048 => '𖤷', 10049 => '𖤸', 10050 => '𖤹', 10051 => '𖤺', 10052 => '𖤻', 10053 => '𖤼', 10054 => '𖤽', 10055 => '𖤾', 10056 => '𖤿', 10057 => '𖥀', 10058 => '𖥁', 10059 => '𖥂', 10060 => '𖥃', 10061 => '𖥄', 10062 => '𖥅', 10063 => '𖥆', 10064 => '𖥇', 10065 => '𖥈', 10066 => '𖥉', 10067 => '𖥊', 10068 => '𖥋', 10069 => '𖥌', 10070 => '𖥍', 10071 => '𖥎', 10072 => '𖥏', 10073 => '𖥐', 10074 => '𖥑', 10075 => '𖥒', 10076 => '𖥓', 10077 => '𖥔', 10078 => '𖥕', 10079 => '𖥖', 10080 => '𖥗', 10081 => '𖥘', 10082 => '𖥙', 10083 => '𖥚', 10084 => '𖥛', 10085 => '𖥜', 10086 => '𖥝', 10087 => '𖥞', 10088 => '𖥟', 10089 => '𖥠', 10090 => '𖥡', 10091 => '𖥢', 10092 => '𖥣', 10093 => '𖥤', 10094 => '𖥥', 10095 => '𖥦', 10096 => '𖥧', 10097 => '𖥨', 10098 => '𖥩', 10099 => '𖥪', 10100 => '𖥫', 10101 => '𖥬', 10102 => '𖥭', 10103 => '𖥮', 10104 => '𖥯', 10105 => '𖥰', 10106 => '𖥱', 10107 => '𖥲', 10108 => '𖥳', 10109 => '𖥴', 10110 => '𖥵', 10111 => '𖥶', 10112 => '𖥷', 10113 => '𖥸', 10114 => '𖥹', 10115 => '𖥺', 10116 => '𖥻', 10117 => '𖥼', 10118 => '𖥽', 10119 => '𖥾', 10120 => '𖥿', 10121 => '𖦀', 10122 => '𖦁', 10123 => '𖦂', 10124 => '𖦃', 10125 => '𖦄', 10126 => '𖦅', 10127 => '𖦆', 10128 => '𖦇', 10129 => '𖦈', 10130 => '𖦉', 10131 => '𖦊', 10132 => '𖦋', 10133 => '𖦌', 10134 => '𖦍', 10135 => '𖦎', 10136 => '𖦏', 10137 => '𖦐', 10138 => '𖦑', 10139 => '𖦒', 10140 => '𖦓', 10141 => '𖦔', 10142 => '𖦕', 10143 => '𖦖', 10144 => '𖦗', 10145 => '𖦘', 10146 => '𖦙', 10147 => '𖦚', 10148 => '𖦛', 10149 => '𖦜', 10150 => '𖦝', 10151 => '𖦞', 10152 => '𖦟', 10153 => '𖦠', 10154 => '𖦡', 10155 => '𖦢', 10156 => '𖦣', 10157 => '𖦤', 10158 => '𖦥', 10159 => '𖦦', 10160 => '𖦧', 10161 => '𖦨', 10162 => '𖦩', 10163 => '𖦪', 10164 => '𖦫', 10165 => '𖦬', 10166 => '𖦭', 10167 => '𖦮', 10168 => '𖦯', 10169 => '𖦰', 10170 => '𖦱', 10171 => '𖦲', 10172 => '𖦳', 10173 => '𖦴', 10174 => '𖦵', 10175 => '𖦶', 10176 => '𖦷', 10177 => '𖦸', 10178 => '𖦹', 10179 => '𖦺', 10180 => '𖦻', 10181 => '𖦼', 10182 => '𖦽', 10183 => '𖦾', 10184 => '𖦿', 10185 => '𖧀', 10186 => '𖧁', 10187 => '𖧂', 10188 => '𖧃', 10189 => '𖧄', 10190 => '𖧅', 10191 => '𖧆', 10192 => '𖧇', 10193 => '𖧈', 10194 => '𖧉', 10195 => '𖧊', 10196 => '𖧋', 10197 => '𖧌', 10198 => '𖧍', 10199 => '𖧎', 10200 => '𖧏', 10201 => '𖧐', 10202 => '𖧑', 10203 => '𖧒', 10204 => '𖧓', 10205 => '𖧔', 10206 => '𖧕', 10207 => '𖧖', 10208 => '𖧗', 10209 => '𖧘', 10210 => '𖧙', 10211 => '𖧚', 10212 => '𖧛', 10213 => '𖧜', 10214 => '𖧝', 10215 => '𖧞', 10216 => '𖧟', 10217 => '𖧠', 10218 => '𖧡', 10219 => '𖧢', 10220 => '𖧣', 10221 => '𖧤', 10222 => '𖧥', 10223 => '𖧦', 10224 => '𖧧', 10225 => '𖧨', 10226 => '𖧩', 10227 => '𖧪', 10228 => '𖧫', 10229 => '𖧬', 10230 => '𖧭', 10231 => '𖧮', 10232 => '𖧯', 10233 => '𖧰', 10234 => '𖧱', 10235 => '𖧲', 10236 => '𖧳', 10237 => '𖧴', 10238 => '𖧵', 10239 => '𖧶', 10240 => '𖧷', 10241 => '𖧸', 10242 => '𖧹', 10243 => '𖧺', 10244 => '𖧻', 10245 => '𖧼', 10246 => '𖧽', 10247 => '𖧾', 10248 => '𖧿', 10249 => '𖨀', 10250 => '𖨁', 10251 => '𖨂', 10252 => '𖨃', 10253 => '𖨄', 10254 => '𖨅', 10255 => '𖨆', 10256 => '𖨇', 10257 => '𖨈', 10258 => '𖨉', 10259 => '𖨊', 10260 => '𖨋', 10261 => '𖨌', 10262 => '𖨍', 10263 => '𖨎', 10264 => '𖨏', 10265 => '𖨐', 10266 => '𖨑', 10267 => '𖨒', 10268 => '𖨓', 10269 => '𖨔', 10270 => '𖨕', 10271 => '𖨖', 10272 => '𖨗', 10273 => '𖨘', 10274 => '𖨙', 10275 => '𖨚', 10276 => '𖨛', 10277 => '𖨜', 10278 => '𖨝', 10279 => '𖨞', 10280 => '𖨟', 10281 => '𖨠', 10282 => '𖨡', 10283 => '𖨢', 10284 => '𖨣', 10285 => '𖨤', 10286 => '𖨥', 10287 => '𖨦', 10288 => '𖨧', 10289 => '𖨨', 10290 => '𖨩', 10291 => '𖨪', 10292 => '𖨫', 10293 => '𖨬', 10294 => '𖨭', 10295 => '𖨮', 10296 => '𖨯', 10297 => '𖨰', 10298 => '𖨱', 10299 => '𖨲', 10300 => '𖨳', 10301 => '𖨴', 10302 => '𖨵', 10303 => '𖨶', 10304 => '𖨷', 10305 => '𖨸', 10306 => 'ᄀ', 10307 => 'ᄁ', 10308 => 'ᄂ', 10309 => 'ᄃ', 10310 => 'ᄄ', 10311 => 'ᄅ', 10312 => 'ᄆ', 10313 => 'ᄇ', 10314 => 'ᄈ', 10315 => 'ᄉ', 10316 => 'ᄊ', 10317 => 'ᄋ', 10318 => 'ᄌ', 10319 => 'ᄍ', 10320 => 'ᄎ', 10321 => 'ᄏ', 10322 => 'ᄐ', 10323 => 'ᄑ', 10324 => 'ᄒ', 10325 => 'ᄓ', 10326 => 'ᄔ', 10327 => 'ᄕ', 10328 => 'ᄖ', 10329 => 'ᄗ', 10330 => 'ᄘ', 10331 => 'ᄙ', 10332 => 'ᄚ', 10333 => 'ᄛ', 10334 => 'ᄜ', 10335 => 'ᄝ', 10336 => 'ᄞ', 10337 => 'ᄟ', 10338 => 'ᄠ', 10339 => 'ᄡ', 10340 => 'ᄢ', 10341 => 'ᄣ', 10342 => 'ᄤ', 10343 => 'ᄥ', 10344 => 'ᄦ', 10345 => 'ᄧ', 10346 => 'ᄨ', 10347 => 'ᄩ', 10348 => 'ᄪ', 10349 => 'ᄫ', 10350 => 'ᄬ', 10351 => 'ᄭ', 10352 => 'ᄮ', 10353 => 'ᄯ', 10354 => 'ᄰ', 10355 => 'ᄱ', 10356 => 'ᄲ', 10357 => 'ᄳ', 10358 => 'ᄴ', 10359 => 'ᄵ', 10360 => 'ᄶ', 10361 => 'ᄷ', 10362 => 'ᄸ', 10363 => 'ᄹ', 10364 => 'ᄺ', 10365 => 'ᄻ', 10366 => 'ᄼ', 10367 => 'ᄽ', 10368 => 'ᄾ', 10369 => 'ᄿ', 10370 => 'ᅀ', 10371 => 'ᅁ', 10372 => 'ᅂ', 10373 => 'ᅃ', 10374 => 'ᅄ', 10375 => 'ᅅ', 10376 => 'ᅆ', 10377 => 'ᅇ', 10378 => 'ᅈ', 10379 => 'ᅉ', 10380 => 'ᅊ', 10381 => 'ᅋ', 10382 => 'ᅌ', 10383 => 'ᅍ', 10384 => 'ᅎ', 10385 => 'ᅏ', 10386 => 'ᅐ', 10387 => 'ᅑ', 10388 => 'ᅒ', 10389 => 'ᅓ', 10390 => 'ᅔ', 10391 => 'ᅕ', 10392 => 'ᅖ', 10393 => 'ᅗ', 10394 => 'ᅘ', 10395 => 'ᅙ', 10396 => 'ᅚ', 10397 => 'ᅛ', 10398 => 'ᅜ', 10399 => 'ᅝ', 10400 => 'ᅞ', 10401 => 'ꥠ', 10402 => 'ꥡ', 10403 => 'ꥢ', 10404 => 'ꥣ', 10405 => 'ꥤ', 10406 => 'ꥥ', 10407 => 'ꥦ', 10408 => 'ꥧ', 10409 => 'ꥨ', 10410 => 'ꥩ', 10411 => 'ꥪ', 10412 => 'ꥫ', 10413 => 'ꥬ', 10414 => 'ꥭ', 10415 => 'ꥮ', 10416 => 'ꥯ', 10417 => 'ꥰ', 10418 => 'ꥱ', 10419 => 'ꥲ', 10420 => 'ꥳ', 10421 => 'ꥴ', 10422 => 'ꥵ', 10423 => 'ꥶ', 10424 => 'ꥷ', 10425 => 'ꥸ', 10426 => 'ꥹ', 10427 => 'ꥺ', 10428 => 'ꥻ', 10429 => 'ꥼ', 10430 => 'ᅟ', 10431 => 'ᅠ', 10432 => 'ᅡ', 10433 => 'ᅢ', 10434 => 'ᅣ', 10435 => 'ᅤ', 10436 => 'ᅥ', 10437 => 'ᅦ', 10438 => 'ᅧ', 10439 => 'ᅨ', 10440 => 'ᅩ', 10441 => 'ᅪ', 10442 => 'ᅫ', 10443 => 'ᅬ', 10444 => 'ᅭ', 10445 => 'ᅮ', 10446 => 'ᅯ', 10447 => 'ᅰ', 10448 => 'ᅱ', 10449 => 'ᅲ', 10450 => 'ᅳ', 10451 => 'ᅴ', 10452 => 'ᅵ', 10453 => 'ᅶ', 10454 => 'ᅷ', 10455 => 'ᅸ', 10456 => 'ᅹ', 10457 => 'ᅺ', 10458 => 'ᅻ', 10459 => 'ᅼ', 10460 => 'ᅽ', 10461 => 'ᅾ', 10462 => 'ᅿ', 10463 => 'ᆀ', 10464 => 'ᆁ', 10465 => 'ᆂ', 10466 => 'ᆃ', 10467 => 'ᆄ', 10468 => 'ᆅ', 10469 => 'ᆆ', 10470 => 'ᆇ', 10471 => 'ᆈ', 10472 => 'ᆉ', 10473 => 'ᆊ', 10474 => 'ᆋ', 10475 => 'ᆌ', 10476 => 'ᆍ', 10477 => 'ᆎ', 10478 => 'ᆏ', 10479 => 'ᆐ', 10480 => 'ᆑ', 10481 => 'ᆒ', 10482 => 'ᆓ', 10483 => 'ᆔ', 10484 => 'ᆕ', 10485 => 'ᆖ', 10486 => 'ᆗ', 10487 => 'ᆘ', 10488 => 'ᆙ', 10489 => 'ᆚ', 10490 => 'ᆛ', 10491 => 'ᆜ', 10492 => 'ᆝ', 10493 => 'ᆞ', 10494 => 'ᆟ', 10495 => 'ᆠ', 10496 => 'ᆡ', 10497 => 'ᆢ', 10498 => 'ᆣ', 10499 => 'ᆤ', 10500 => 'ᆥ', 10501 => 'ᆦ', 10502 => 'ᆧ', 10503 => 'ힰ', 10504 => 'ힱ', 10505 => 'ힲ', 10506 => 'ힳ', 10507 => 'ힴ', 10508 => 'ힵ', 10509 => 'ힶ', 10510 => 'ힷ', 10511 => 'ힸ', 10512 => 'ힹ', 10513 => 'ힺ', 10514 => 'ힻ', 10515 => 'ힼ', 10516 => 'ힽ', 10517 => 'ힾ', 10518 => 'ힿ', 10519 => 'ퟀ', 10520 => 'ퟁ', 10521 => 'ퟂ', 10522 => 'ퟃ', 10523 => 'ퟄ', 10524 => 'ퟅ', 10525 => 'ퟆ', 10526 => 'ᆨ', 10527 => 'ᆩ', 10528 => 'ᆪ', 10529 => 'ᆫ', 10530 => 'ᆬ', 10531 => 'ᆭ', 10532 => 'ᆮ', 10533 => 'ᆯ', 10534 => 'ᆰ', 10535 => 'ᆱ', 10536 => 'ᆲ', 10537 => 'ᆳ', 10538 => 'ᆴ', 10539 => 'ᆵ', 10540 => 'ᆶ', 10541 => 'ᆷ', 10542 => 'ᆸ', 10543 => 'ᆹ', 10544 => 'ᆺ', 10545 => 'ᆻ', 10546 => 'ᆼ', 10547 => 'ᆽ', 10548 => 'ᆾ', 10549 => 'ᆿ', 10550 => 'ᇀ', 10551 => 'ᇁ', 10552 => 'ᇂ', 10553 => 'ᇃ', 10554 => 'ᇄ', 10555 => 'ᇅ', 10556 => 'ᇆ', 10557 => 'ᇇ', 10558 => 'ᇈ', 10559 => 'ᇉ', 10560 => 'ᇊ', 10561 => 'ᇋ', 10562 => 'ᇌ', 10563 => 'ᇍ', 10564 => 'ᇎ', 10565 => 'ᇏ', 10566 => 'ᇐ', 10567 => 'ᇑ', 10568 => 'ᇒ', 10569 => 'ᇓ', 10570 => 'ᇔ', 10571 => 'ᇕ', 10572 => 'ᇖ', 10573 => 'ᇗ', 10574 => 'ᇘ', 10575 => 'ᇙ', 10576 => 'ᇚ', 10577 => 'ᇛ', 10578 => 'ᇜ', 10579 => 'ᇝ', 10580 => 'ᇞ', 10581 => 'ᇟ', 10582 => 'ᇠ', 10583 => 'ᇡ', 10584 => 'ᇢ', 10585 => 'ᇣ', 10586 => 'ᇤ', 10587 => 'ᇥ', 10588 => 'ᇦ', 10589 => 'ᇧ', 10590 => 'ᇨ', 10591 => 'ᇩ', 10592 => 'ᇪ', 10593 => 'ᇫ', 10594 => 'ᇬ', 10595 => 'ᇭ', 10596 => 'ᇮ', 10597 => 'ᇯ', 10598 => 'ᇰ', 10599 => 'ᇱ', 10600 => 'ᇲ', 10601 => 'ᇳ', 10602 => 'ᇴ', 10603 => 'ᇵ', 10604 => 'ᇶ', 10605 => 'ᇷ', 10606 => 'ᇸ', 10607 => 'ᇹ', 10608 => 'ᇺ', 10609 => 'ᇻ', 10610 => 'ᇼ', 10611 => 'ᇽ', 10612 => 'ᇾ', 10613 => 'ᇿ', 10614 => 'ퟋ', 10615 => 'ퟌ', 10616 => 'ퟍ', 10617 => 'ퟎ', 10618 => 'ퟏ', 10619 => 'ퟐ', 10620 => 'ퟑ', 10621 => 'ퟒ', 10622 => 'ퟓ', 10623 => 'ퟔ', 10624 => 'ퟕ', 10625 => 'ퟖ', 10626 => 'ퟗ', 10627 => 'ퟘ', 10628 => 'ퟙ', 10629 => 'ퟚ', 10630 => 'ퟛ', 10631 => 'ퟜ', 10632 => 'ퟝ', 10633 => 'ퟞ', 10634 => 'ퟟ', 10635 => 'ퟠ', 10636 => 'ퟡ', 10637 => 'ퟢ', 10638 => 'ퟣ', 10639 => 'ퟤ', 10640 => 'ퟥ', 10641 => 'ퟦ', 10642 => 'ퟧ', 10643 => 'ퟨ', 10644 => 'ퟩ', 10645 => 'ퟪ', 10646 => 'ퟫ', 10647 => 'ퟬ', 10648 => 'ퟭ', 10649 => 'ퟮ', 10650 => 'ퟯ', 10651 => 'ퟰ', 10652 => 'ퟱ', 10653 => 'ퟲ', 10654 => 'ퟳ', 10655 => 'ퟴ', 10656 => 'ퟵ', 10657 => 'ퟶ', 10658 => 'ퟷ', 10659 => 'ퟸ', 10660 => 'ퟹ', 10661 => 'ퟺ', 10662 => 'ퟻ', 10663 => 'あ', 10664 => 'い', 10665 => 'う', 10666 => '𛀀', 10667 => 'え', 10668 => 'お', 10669 => 'か', 10670 => 'き', 10671 => 'く', 10672 => 'け', 10673 => 'こ', 10674 => 'さ', 10675 => 'し', 10676 => 'す', 10677 => 'せ', 10678 => 'そ', 10679 => 'た', 10680 => 'ち', 10681 => 'つ', 10682 => 'て', 10683 => 'と', 10684 => 'な', 10685 => 'に', 10686 => 'ぬ', 10687 => 'ね', 10688 => 'の', 10689 => 'は', 10690 => 'ひ', 10691 => 'ふ', 10692 => 'へ', 10693 => 'ほ', 10694 => 'ま', 10695 => 'み', 10696 => 'む', 10697 => 'め', 10698 => 'も', 10699 => 'や', 10700 => 'ゆ', 10701 => '𛀁', 10702 => 'よ', 10703 => 'ら', 10704 => 'り', 10705 => 'る', 10706 => 'れ', 10707 => 'ろ', 10708 => 'わ', 10709 => 'ゐ', 10710 => 'ゑ', 10711 => 'を', 10712 => 'ん', 10713 => 'ㄅ', 10714 => 'ㄆ', 10715 => 'ㄇ', 10716 => 'ㄈ', 10717 => 'ㄪ', 10718 => 'ㄉ', 10719 => 'ㄊ', 10720 => 'ㄋ', 10721 => 'ㄌ', 10722 => 'ㄍ', 10723 => 'ㄎ', 10724 => 'ㄫ', 10725 => 'ㆭ', 10726 => 'ㄏ', 10727 => 'ㄐ', 10728 => 'ㄑ', 10729 => 'ㄒ', 10730 => 'ㄬ', 10731 => 'ㄓ', 10732 => 'ㄔ', 10733 => 'ㄕ', 10734 => 'ㄖ', 10735 => 'ㄗ', 10736 => 'ㄘ', 10737 => 'ㄙ', 10738 => 'ㆸ', 10739 => 'ㆹ', 10740 => 'ㆺ', 10741 => 'ㄚ', 10742 => 'ㄛ', 10743 => 'ㆦ', 10744 => 'ㄜ', 10745 => 'ㄝ', 10746 => 'ㆤ', 10747 => 'ㄞ', 10748 => 'ㄟ', 10749 => 'ㄠ', 10750 => 'ㄡ', 10751 => 'ㄢ', 10752 => 'ㄣ', 10753 => 'ㄤ', 10754 => 'ㆲ', 10755 => 'ㄥ', 10756 => 'ㆰ', 10757 => 'ㆱ', 10758 => 'ㆬ', 10759 => 'ㄦ', 10760 => 'ㄧ', 10761 => 'ㄨ', 10762 => 'ㄩ', 10763 => 'ㄭ', 10764 => 'ꀀ', 10765 => 'ꀁ', 10766 => 'ꀂ', 10767 => 'ꀃ', 10768 => 'ꀄ', 10769 => 'ꀅ', 10770 => 'ꀆ', 10771 => 'ꀇ', 10772 => 'ꀈ', 10773 => 'ꀉ', 10774 => 'ꀊ', 10775 => 'ꀋ', 10776 => 'ꀌ', 10777 => 'ꀍ', 10778 => 'ꀎ', 10779 => 'ꀏ', 10780 => 'ꀐ', 10781 => 'ꀑ', 10782 => 'ꀒ', 10783 => 'ꀓ', 10784 => 'ꀔ', 10785 => 'ꀕ', 10786 => 'ꀖ', 10787 => 'ꀗ', 10788 => 'ꀘ', 10789 => 'ꀙ', 10790 => 'ꀚ', 10791 => 'ꀛ', 10792 => 'ꀜ', 10793 => 'ꀝ', 10794 => 'ꀞ', 10795 => 'ꀟ', 10796 => 'ꀠ', 10797 => 'ꀡ', 10798 => 'ꀢ', 10799 => 'ꀣ', 10800 => 'ꀤ', 10801 => 'ꀥ', 10802 => 'ꀦ', 10803 => 'ꀧ', 10804 => 'ꀨ', 10805 => 'ꀩ', 10806 => 'ꀪ', 10807 => 'ꀫ', 10808 => 'ꀬ', 10809 => 'ꀭ', 10810 => 'ꀮ', 10811 => 'ꀯ', 10812 => 'ꀰ', 10813 => 'ꀱ', 10814 => 'ꀲ', 10815 => 'ꀳ', 10816 => 'ꀴ', 10817 => 'ꀵ', 10818 => 'ꀶ', 10819 => 'ꀷ', 10820 => 'ꀸ', 10821 => 'ꀹ', 10822 => 'ꀺ', 10823 => 'ꀻ', 10824 => 'ꀼ', 10825 => 'ꀽ', 10826 => 'ꀾ', 10827 => 'ꀿ', 10828 => 'ꁀ', 10829 => 'ꁁ', 10830 => 'ꁂ', 10831 => 'ꁃ', 10832 => 'ꁄ', 10833 => 'ꁅ', 10834 => 'ꁆ', 10835 => 'ꁇ', 10836 => 'ꁈ', 10837 => 'ꁉ', 10838 => 'ꁊ', 10839 => 'ꁋ', 10840 => 'ꁌ', 10841 => 'ꁍ', 10842 => 'ꁎ', 10843 => 'ꁏ', 10844 => 'ꁐ', 10845 => 'ꁑ', 10846 => 'ꁒ', 10847 => 'ꁓ', 10848 => 'ꁔ', 10849 => 'ꁕ', 10850 => 'ꁖ', 10851 => 'ꁗ', 10852 => 'ꁘ', 10853 => 'ꁙ', 10854 => 'ꁚ', 10855 => 'ꁛ', 10856 => 'ꁜ', 10857 => 'ꁝ', 10858 => 'ꁞ', 10859 => 'ꁟ', 10860 => 'ꁠ', 10861 => 'ꁡ', 10862 => 'ꁢ', 10863 => 'ꁣ', 10864 => 'ꁤ', 10865 => 'ꁥ', 10866 => 'ꁦ', 10867 => 'ꁧ', 10868 => 'ꁨ', 10869 => 'ꁩ', 10870 => 'ꁪ', 10871 => 'ꁫ', 10872 => 'ꁬ', 10873 => 'ꁭ', 10874 => 'ꁮ', 10875 => 'ꁯ', 10876 => 'ꁰ', 10877 => 'ꁱ', 10878 => 'ꁲ', 10879 => 'ꁳ', 10880 => 'ꁴ', 10881 => 'ꁵ', 10882 => 'ꁶ', 10883 => 'ꁷ', 10884 => 'ꁸ', 10885 => 'ꁹ', 10886 => 'ꁺ', 10887 => 'ꁻ', 10888 => 'ꁼ', 10889 => 'ꁽ', 10890 => 'ꁾ', 10891 => 'ꁿ', 10892 => 'ꂀ', 10893 => 'ꂁ', 10894 => 'ꂂ', 10895 => 'ꂃ', 10896 => 'ꂄ', 10897 => 'ꂅ', 10898 => 'ꂆ', 10899 => 'ꂇ', 10900 => 'ꂈ', 10901 => 'ꂉ', 10902 => 'ꂊ', 10903 => 'ꂋ', 10904 => 'ꂌ', 10905 => 'ꂍ', 10906 => 'ꂎ', 10907 => 'ꂏ', 10908 => 'ꂐ', 10909 => 'ꂑ', 10910 => 'ꂒ', 10911 => 'ꂓ', 10912 => 'ꂔ', 10913 => 'ꂕ', 10914 => 'ꂖ', 10915 => 'ꂗ', 10916 => 'ꂘ', 10917 => 'ꂙ', 10918 => 'ꂚ', 10919 => 'ꂛ', 10920 => 'ꂜ', 10921 => 'ꂝ', 10922 => 'ꂞ', 10923 => 'ꂟ', 10924 => 'ꂠ', 10925 => 'ꂡ', 10926 => 'ꂢ', 10927 => 'ꂣ', 10928 => 'ꂤ', 10929 => 'ꂥ', 10930 => 'ꂦ', 10931 => 'ꂧ', 10932 => 'ꂨ', 10933 => 'ꂩ', 10934 => 'ꂪ', 10935 => 'ꂫ', 10936 => 'ꂬ', 10937 => 'ꂭ', 10938 => 'ꂮ', 10939 => 'ꂯ', 10940 => 'ꂰ', 10941 => 'ꂱ', 10942 => 'ꂲ', 10943 => 'ꂳ', 10944 => 'ꂴ', 10945 => 'ꂵ', 10946 => 'ꂶ', 10947 => 'ꂷ', 10948 => 'ꂸ', 10949 => 'ꂹ', 10950 => 'ꂺ', 10951 => 'ꂻ', 10952 => 'ꂼ', 10953 => 'ꂽ', 10954 => 'ꂾ', 10955 => 'ꂿ', 10956 => 'ꃀ', 10957 => 'ꃁ', 10958 => 'ꃂ', 10959 => 'ꃃ', 10960 => 'ꃄ', 10961 => 'ꃅ', 10962 => 'ꃆ', 10963 => 'ꃇ', 10964 => 'ꃈ', 10965 => 'ꃉ', 10966 => 'ꃊ', 10967 => 'ꃋ', 10968 => 'ꃌ', 10969 => 'ꃍ', 10970 => 'ꃎ', 10971 => 'ꃏ', 10972 => 'ꃐ', 10973 => 'ꃑ', 10974 => 'ꃒ', 10975 => 'ꃓ', 10976 => 'ꃔ', 10977 => 'ꃕ', 10978 => 'ꃖ', 10979 => 'ꃗ', 10980 => 'ꃘ', 10981 => 'ꃙ', 10982 => 'ꃚ', 10983 => 'ꃛ', 10984 => 'ꃜ', 10985 => 'ꃝ', 10986 => 'ꃞ', 10987 => 'ꃟ', 10988 => 'ꃠ', 10989 => 'ꃡ', 10990 => 'ꃢ', 10991 => 'ꃣ', 10992 => 'ꃤ', 10993 => 'ꃥ', 10994 => 'ꃦ', 10995 => 'ꃧ', 10996 => 'ꃨ', 10997 => 'ꃩ', 10998 => 'ꃪ', 10999 => 'ꃫ', 11000 => 'ꃬ', 11001 => 'ꃭ', 11002 => 'ꃮ', 11003 => 'ꃯ', 11004 => 'ꃰ', 11005 => 'ꃱ', 11006 => 'ꃲ', 11007 => 'ꃳ', 11008 => 'ꃴ', 11009 => 'ꃵ', 11010 => 'ꃶ', 11011 => 'ꃷ', 11012 => 'ꃸ', 11013 => 'ꃹ', 11014 => 'ꃺ', 11015 => 'ꃻ', 11016 => 'ꃼ', 11017 => 'ꃽ', 11018 => 'ꃾ', 11019 => 'ꃿ', 11020 => 'ꄀ', 11021 => 'ꄁ', 11022 => 'ꄂ', 11023 => 'ꄃ', 11024 => 'ꄄ', 11025 => 'ꄅ', 11026 => 'ꄆ', 11027 => 'ꄇ', 11028 => 'ꄈ', 11029 => 'ꄉ', 11030 => 'ꄊ', 11031 => 'ꄋ', 11032 => 'ꄌ', 11033 => 'ꄍ', 11034 => 'ꄎ', 11035 => 'ꄏ', 11036 => 'ꄐ', 11037 => 'ꄑ', 11038 => 'ꄒ', 11039 => 'ꄓ', 11040 => 'ꄔ', 11041 => 'ꄕ', 11042 => 'ꄖ', 11043 => 'ꄗ', 11044 => 'ꄘ', 11045 => 'ꄙ', 11046 => 'ꄚ', 11047 => 'ꄛ', 11048 => 'ꄜ', 11049 => 'ꄝ', 11050 => 'ꄞ', 11051 => 'ꄟ', 11052 => 'ꄠ', 11053 => 'ꄡ', 11054 => 'ꄢ', 11055 => 'ꄣ', 11056 => 'ꄤ', 11057 => 'ꄥ', 11058 => 'ꄦ', 11059 => 'ꄧ', 11060 => 'ꄨ', 11061 => 'ꄩ', 11062 => 'ꄪ', 11063 => 'ꄫ', 11064 => 'ꄬ', 11065 => 'ꄭ', 11066 => 'ꄮ', 11067 => 'ꄯ', 11068 => 'ꄰ', 11069 => 'ꄱ', 11070 => 'ꄲ', 11071 => 'ꄳ', 11072 => 'ꄴ', 11073 => 'ꄵ', 11074 => 'ꄶ', 11075 => 'ꄷ', 11076 => 'ꄸ', 11077 => 'ꄹ', 11078 => 'ꄺ', 11079 => 'ꄻ', 11080 => 'ꄼ', 11081 => 'ꄽ', 11082 => 'ꄾ', 11083 => 'ꄿ', 11084 => 'ꅀ', 11085 => 'ꅁ', 11086 => 'ꅂ', 11087 => 'ꅃ', 11088 => 'ꅄ', 11089 => 'ꅅ', 11090 => 'ꅆ', 11091 => 'ꅇ', 11092 => 'ꅈ', 11093 => 'ꅉ', 11094 => 'ꅊ', 11095 => 'ꅋ', 11096 => 'ꅌ', 11097 => 'ꅍ', 11098 => 'ꅎ', 11099 => 'ꅏ', 11100 => 'ꅐ', 11101 => 'ꅑ', 11102 => 'ꅒ', 11103 => 'ꅓ', 11104 => 'ꅔ', 11105 => 'ꅕ', 11106 => 'ꅖ', 11107 => 'ꅗ', 11108 => 'ꅘ', 11109 => 'ꅙ', 11110 => 'ꅚ', 11111 => 'ꅛ', 11112 => 'ꅜ', 11113 => 'ꅝ', 11114 => 'ꅞ', 11115 => 'ꅟ', 11116 => 'ꅠ', 11117 => 'ꅡ', 11118 => 'ꅢ', 11119 => 'ꅣ', 11120 => 'ꅤ', 11121 => 'ꅥ', 11122 => 'ꅦ', 11123 => 'ꅧ', 11124 => 'ꅨ', 11125 => 'ꅩ', 11126 => 'ꅪ', 11127 => 'ꅫ', 11128 => 'ꅬ', 11129 => 'ꅭ', 11130 => 'ꅮ', 11131 => 'ꅯ', 11132 => 'ꅰ', 11133 => 'ꅱ', 11134 => 'ꅲ', 11135 => 'ꅳ', 11136 => 'ꅴ', 11137 => 'ꅵ', 11138 => 'ꅶ', 11139 => 'ꅷ', 11140 => 'ꅸ', 11141 => 'ꅹ', 11142 => 'ꅺ', 11143 => 'ꅻ', 11144 => 'ꅼ', 11145 => 'ꅽ', 11146 => 'ꅾ', 11147 => 'ꅿ', 11148 => 'ꆀ', 11149 => 'ꆁ', 11150 => 'ꆂ', 11151 => 'ꆃ', 11152 => 'ꆄ', 11153 => 'ꆅ', 11154 => 'ꆆ', 11155 => 'ꆇ', 11156 => 'ꆈ', 11157 => 'ꆉ', 11158 => 'ꆊ', 11159 => 'ꆋ', 11160 => 'ꆌ', 11161 => 'ꆍ', 11162 => 'ꆎ', 11163 => 'ꆏ', 11164 => 'ꆐ', 11165 => 'ꆑ', 11166 => 'ꆒ', 11167 => 'ꆓ', 11168 => 'ꆔ', 11169 => 'ꆕ', 11170 => 'ꆖ', 11171 => 'ꆗ', 11172 => 'ꆘ', 11173 => 'ꆙ', 11174 => 'ꆚ', 11175 => 'ꆛ', 11176 => 'ꆜ', 11177 => 'ꆝ', 11178 => 'ꆞ', 11179 => 'ꆟ', 11180 => 'ꆠ', 11181 => 'ꆡ', 11182 => 'ꆢ', 11183 => 'ꆣ', 11184 => 'ꆤ', 11185 => 'ꆥ', 11186 => 'ꆦ', 11187 => 'ꆧ', 11188 => 'ꆨ', 11189 => 'ꆩ', 11190 => 'ꆪ', 11191 => 'ꆫ', 11192 => 'ꆬ', 11193 => 'ꆭ', 11194 => 'ꆮ', 11195 => 'ꆯ', 11196 => 'ꆰ', 11197 => 'ꆱ', 11198 => 'ꆲ', 11199 => 'ꆳ', 11200 => 'ꆴ', 11201 => 'ꆵ', 11202 => 'ꆶ', 11203 => 'ꆷ', 11204 => 'ꆸ', 11205 => 'ꆹ', 11206 => 'ꆺ', 11207 => 'ꆻ', 11208 => 'ꆼ', 11209 => 'ꆽ', 11210 => 'ꆾ', 11211 => 'ꆿ', 11212 => 'ꇀ', 11213 => 'ꇁ', 11214 => 'ꇂ', 11215 => 'ꇃ', 11216 => 'ꇄ', 11217 => 'ꇅ', 11218 => 'ꇆ', 11219 => 'ꇇ', 11220 => 'ꇈ', 11221 => 'ꇉ', 11222 => 'ꇊ', 11223 => 'ꇋ', 11224 => 'ꇌ', 11225 => 'ꇍ', 11226 => 'ꇎ', 11227 => 'ꇏ', 11228 => 'ꇐ', 11229 => 'ꇑ', 11230 => 'ꇒ', 11231 => 'ꇓ', 11232 => 'ꇔ', 11233 => 'ꇕ', 11234 => 'ꇖ', 11235 => 'ꇗ', 11236 => 'ꇘ', 11237 => 'ꇙ', 11238 => 'ꇚ', 11239 => 'ꇛ', 11240 => 'ꇜ', 11241 => 'ꇝ', 11242 => 'ꇞ', 11243 => 'ꇟ', 11244 => 'ꇠ', 11245 => 'ꇡ', 11246 => 'ꇢ', 11247 => 'ꇣ', 11248 => 'ꇤ', 11249 => 'ꇥ', 11250 => 'ꇦ', 11251 => 'ꇧ', 11252 => 'ꇨ', 11253 => 'ꇩ', 11254 => 'ꇪ', 11255 => 'ꇫ', 11256 => 'ꇬ', 11257 => 'ꇭ', 11258 => 'ꇮ', 11259 => 'ꇯ', 11260 => 'ꇰ', 11261 => 'ꇱ', 11262 => 'ꇲ', 11263 => 'ꇳ', 11264 => 'ꇴ', 11265 => 'ꇵ', 11266 => 'ꇶ', 11267 => 'ꇷ', 11268 => 'ꇸ', 11269 => 'ꇹ', 11270 => 'ꇺ', 11271 => 'ꇻ', 11272 => 'ꇼ', 11273 => 'ꇽ', 11274 => 'ꇾ', 11275 => 'ꇿ', 11276 => 'ꈀ', 11277 => 'ꈁ', 11278 => 'ꈂ', 11279 => 'ꈃ', 11280 => 'ꈄ', 11281 => 'ꈅ', 11282 => 'ꈆ', 11283 => 'ꈇ', 11284 => 'ꈈ', 11285 => 'ꈉ', 11286 => 'ꈊ', 11287 => 'ꈋ', 11288 => 'ꈌ', 11289 => 'ꈍ', 11290 => 'ꈎ', 11291 => 'ꈏ', 11292 => 'ꈐ', 11293 => 'ꈑ', 11294 => 'ꈒ', 11295 => 'ꈓ', 11296 => 'ꈔ', 11297 => 'ꈕ', 11298 => 'ꈖ', 11299 => 'ꈗ', 11300 => 'ꈘ', 11301 => 'ꈙ', 11302 => 'ꈚ', 11303 => 'ꈛ', 11304 => 'ꈜ', 11305 => 'ꈝ', 11306 => 'ꈞ', 11307 => 'ꈟ', 11308 => 'ꈠ', 11309 => 'ꈡ', 11310 => 'ꈢ', 11311 => 'ꈣ', 11312 => 'ꈤ', 11313 => 'ꈥ', 11314 => 'ꈦ', 11315 => 'ꈧ', 11316 => 'ꈨ', 11317 => 'ꈩ', 11318 => 'ꈪ', 11319 => 'ꈫ', 11320 => 'ꈬ', 11321 => 'ꈭ', 11322 => 'ꈮ', 11323 => 'ꈯ', 11324 => 'ꈰ', 11325 => 'ꈱ', 11326 => 'ꈲ', 11327 => 'ꈳ', 11328 => 'ꈴ', 11329 => 'ꈵ', 11330 => 'ꈶ', 11331 => 'ꈷ', 11332 => 'ꈸ', 11333 => 'ꈹ', 11334 => 'ꈺ', 11335 => 'ꈻ', 11336 => 'ꈼ', 11337 => 'ꈽ', 11338 => 'ꈾ', 11339 => 'ꈿ', 11340 => 'ꉀ', 11341 => 'ꉁ', 11342 => 'ꉂ', 11343 => 'ꉃ', 11344 => 'ꉄ', 11345 => 'ꉅ', 11346 => 'ꉆ', 11347 => 'ꉇ', 11348 => 'ꉈ', 11349 => 'ꉉ', 11350 => 'ꉊ', 11351 => 'ꉋ', 11352 => 'ꉌ', 11353 => 'ꉍ', 11354 => 'ꉎ', 11355 => 'ꉏ', 11356 => 'ꉐ', 11357 => 'ꉑ', 11358 => 'ꉒ', 11359 => 'ꉓ', 11360 => 'ꉔ', 11361 => 'ꉕ', 11362 => 'ꉖ', 11363 => 'ꉗ', 11364 => 'ꉘ', 11365 => 'ꉙ', 11366 => 'ꉚ', 11367 => 'ꉛ', 11368 => 'ꉜ', 11369 => 'ꉝ', 11370 => 'ꉞ', 11371 => 'ꉟ', 11372 => 'ꉠ', 11373 => 'ꉡ', 11374 => 'ꉢ', 11375 => 'ꉣ', 11376 => 'ꉤ', 11377 => 'ꉥ', 11378 => 'ꉦ', 11379 => 'ꉧ', 11380 => 'ꉨ', 11381 => 'ꉩ', 11382 => 'ꉪ', 11383 => 'ꉫ', 11384 => 'ꉬ', 11385 => 'ꉭ', 11386 => 'ꉮ', 11387 => 'ꉯ', 11388 => 'ꉰ', 11389 => 'ꉱ', 11390 => 'ꉲ', 11391 => 'ꉳ', 11392 => 'ꉴ', 11393 => 'ꉵ', 11394 => 'ꉶ', 11395 => 'ꉷ', 11396 => 'ꉸ', 11397 => 'ꉹ', 11398 => 'ꉺ', 11399 => 'ꉻ', 11400 => 'ꉼ', 11401 => 'ꉽ', 11402 => 'ꉾ', 11403 => 'ꉿ', 11404 => 'ꊀ', 11405 => 'ꊁ', 11406 => 'ꊂ', 11407 => 'ꊃ', 11408 => 'ꊄ', 11409 => 'ꊅ', 11410 => 'ꊆ', 11411 => 'ꊇ', 11412 => 'ꊈ', 11413 => 'ꊉ', 11414 => 'ꊊ', 11415 => 'ꊋ', 11416 => 'ꊌ', 11417 => 'ꊍ', 11418 => 'ꊎ', 11419 => 'ꊏ', 11420 => 'ꊐ', 11421 => 'ꊑ', 11422 => 'ꊒ', 11423 => 'ꊓ', 11424 => 'ꊔ', 11425 => 'ꊕ', 11426 => 'ꊖ', 11427 => 'ꊗ', 11428 => 'ꊘ', 11429 => 'ꊙ', 11430 => 'ꊚ', 11431 => 'ꊛ', 11432 => 'ꊜ', 11433 => 'ꊝ', 11434 => 'ꊞ', 11435 => 'ꊟ', 11436 => 'ꊠ', 11437 => 'ꊡ', 11438 => 'ꊢ', 11439 => 'ꊣ', 11440 => 'ꊤ', 11441 => 'ꊥ', 11442 => 'ꊦ', 11443 => 'ꊧ', 11444 => 'ꊨ', 11445 => 'ꊩ', 11446 => 'ꊪ', 11447 => 'ꊫ', 11448 => 'ꊬ', 11449 => 'ꊭ', 11450 => 'ꊮ', 11451 => 'ꊯ', 11452 => 'ꊰ', 11453 => 'ꊱ', 11454 => 'ꊲ', 11455 => 'ꊳ', 11456 => 'ꊴ', 11457 => 'ꊵ', 11458 => 'ꊶ', 11459 => 'ꊷ', 11460 => 'ꊸ', 11461 => 'ꊹ', 11462 => 'ꊺ', 11463 => 'ꊻ', 11464 => 'ꊼ', 11465 => 'ꊽ', 11466 => 'ꊾ', 11467 => 'ꊿ', 11468 => 'ꋀ', 11469 => 'ꋁ', 11470 => 'ꋂ', 11471 => 'ꋃ', 11472 => 'ꋄ', 11473 => 'ꋅ', 11474 => 'ꋆ', 11475 => 'ꋇ', 11476 => 'ꋈ', 11477 => 'ꋉ', 11478 => 'ꋊ', 11479 => 'ꋋ', 11480 => 'ꋌ', 11481 => 'ꋍ', 11482 => 'ꋎ', 11483 => 'ꋏ', 11484 => 'ꋐ', 11485 => 'ꋑ', 11486 => 'ꋒ', 11487 => 'ꋓ', 11488 => 'ꋔ', 11489 => 'ꋕ', 11490 => 'ꋖ', 11491 => 'ꋗ', 11492 => 'ꋘ', 11493 => 'ꋙ', 11494 => 'ꋚ', 11495 => 'ꋛ', 11496 => 'ꋜ', 11497 => 'ꋝ', 11498 => 'ꋞ', 11499 => 'ꋟ', 11500 => 'ꋠ', 11501 => 'ꋡ', 11502 => 'ꋢ', 11503 => 'ꋣ', 11504 => 'ꋤ', 11505 => 'ꋥ', 11506 => 'ꋦ', 11507 => 'ꋧ', 11508 => 'ꋨ', 11509 => 'ꋩ', 11510 => 'ꋪ', 11511 => 'ꋫ', 11512 => 'ꋬ', 11513 => 'ꋭ', 11514 => 'ꋮ', 11515 => 'ꋯ', 11516 => 'ꋰ', 11517 => 'ꋱ', 11518 => 'ꋲ', 11519 => 'ꋳ', 11520 => 'ꋴ', 11521 => 'ꋵ', 11522 => 'ꋶ', 11523 => 'ꋷ', 11524 => 'ꋸ', 11525 => 'ꋹ', 11526 => 'ꋺ', 11527 => 'ꋻ', 11528 => 'ꋼ', 11529 => 'ꋽ', 11530 => 'ꋾ', 11531 => 'ꋿ', 11532 => 'ꌀ', 11533 => 'ꌁ', 11534 => 'ꌂ', 11535 => 'ꌃ', 11536 => 'ꌄ', 11537 => 'ꌅ', 11538 => 'ꌆ', 11539 => 'ꌇ', 11540 => 'ꌈ', 11541 => 'ꌉ', 11542 => 'ꌊ', 11543 => 'ꌋ', 11544 => 'ꌌ', 11545 => 'ꌍ', 11546 => 'ꌎ', 11547 => 'ꌏ', 11548 => 'ꌐ', 11549 => 'ꌑ', 11550 => 'ꌒ', 11551 => 'ꌓ', 11552 => 'ꌔ', 11553 => 'ꌕ', 11554 => 'ꌖ', 11555 => 'ꌗ', 11556 => 'ꌘ', 11557 => 'ꌙ', 11558 => 'ꌚ', 11559 => 'ꌛ', 11560 => 'ꌜ', 11561 => 'ꌝ', 11562 => 'ꌞ', 11563 => 'ꌟ', 11564 => 'ꌠ', 11565 => 'ꌡ', 11566 => 'ꌢ', 11567 => 'ꌣ', 11568 => 'ꌤ', 11569 => 'ꌥ', 11570 => 'ꌦ', 11571 => 'ꌧ', 11572 => 'ꌨ', 11573 => 'ꌩ', 11574 => 'ꌪ', 11575 => 'ꌫ', 11576 => 'ꌬ', 11577 => 'ꌭ', 11578 => 'ꌮ', 11579 => 'ꌯ', 11580 => 'ꌰ', 11581 => 'ꌱ', 11582 => 'ꌲ', 11583 => 'ꌳ', 11584 => 'ꌴ', 11585 => 'ꌵ', 11586 => 'ꌶ', 11587 => 'ꌷ', 11588 => 'ꌸ', 11589 => 'ꌹ', 11590 => 'ꌺ', 11591 => 'ꌻ', 11592 => 'ꌼ', 11593 => 'ꌽ', 11594 => 'ꌾ', 11595 => 'ꌿ', 11596 => 'ꍀ', 11597 => 'ꍁ', 11598 => 'ꍂ', 11599 => 'ꍃ', 11600 => 'ꍄ', 11601 => 'ꍅ', 11602 => 'ꍆ', 11603 => 'ꍇ', 11604 => 'ꍈ', 11605 => 'ꍉ', 11606 => 'ꍊ', 11607 => 'ꍋ', 11608 => 'ꍌ', 11609 => 'ꍍ', 11610 => 'ꍎ', 11611 => 'ꍏ', 11612 => 'ꍐ', 11613 => 'ꍑ', 11614 => 'ꍒ', 11615 => 'ꍓ', 11616 => 'ꍔ', 11617 => 'ꍕ', 11618 => 'ꍖ', 11619 => 'ꍗ', 11620 => 'ꍘ', 11621 => 'ꍙ', 11622 => 'ꍚ', 11623 => 'ꍛ', 11624 => 'ꍜ', 11625 => 'ꍝ', 11626 => 'ꍞ', 11627 => 'ꍟ', 11628 => 'ꍠ', 11629 => 'ꍡ', 11630 => 'ꍢ', 11631 => 'ꍣ', 11632 => 'ꍤ', 11633 => 'ꍥ', 11634 => 'ꍦ', 11635 => 'ꍧ', 11636 => 'ꍨ', 11637 => 'ꍩ', 11638 => 'ꍪ', 11639 => 'ꍫ', 11640 => 'ꍬ', 11641 => 'ꍭ', 11642 => 'ꍮ', 11643 => 'ꍯ', 11644 => 'ꍰ', 11645 => 'ꍱ', 11646 => 'ꍲ', 11647 => 'ꍳ', 11648 => 'ꍴ', 11649 => 'ꍵ', 11650 => 'ꍶ', 11651 => 'ꍷ', 11652 => 'ꍸ', 11653 => 'ꍹ', 11654 => 'ꍺ', 11655 => 'ꍻ', 11656 => 'ꍼ', 11657 => 'ꍽ', 11658 => 'ꍾ', 11659 => 'ꍿ', 11660 => 'ꎀ', 11661 => 'ꎁ', 11662 => 'ꎂ', 11663 => 'ꎃ', 11664 => 'ꎄ', 11665 => 'ꎅ', 11666 => 'ꎆ', 11667 => 'ꎇ', 11668 => 'ꎈ', 11669 => 'ꎉ', 11670 => 'ꎊ', 11671 => 'ꎋ', 11672 => 'ꎌ', 11673 => 'ꎍ', 11674 => 'ꎎ', 11675 => 'ꎏ', 11676 => 'ꎐ', 11677 => 'ꎑ', 11678 => 'ꎒ', 11679 => 'ꎓ', 11680 => 'ꎔ', 11681 => 'ꎕ', 11682 => 'ꎖ', 11683 => 'ꎗ', 11684 => 'ꎘ', 11685 => 'ꎙ', 11686 => 'ꎚ', 11687 => 'ꎛ', 11688 => 'ꎜ', 11689 => 'ꎝ', 11690 => 'ꎞ', 11691 => 'ꎟ', 11692 => 'ꎠ', 11693 => 'ꎡ', 11694 => 'ꎢ', 11695 => 'ꎣ', 11696 => 'ꎤ', 11697 => 'ꎥ', 11698 => 'ꎦ', 11699 => 'ꎧ', 11700 => 'ꎨ', 11701 => 'ꎩ', 11702 => 'ꎪ', 11703 => 'ꎫ', 11704 => 'ꎬ', 11705 => 'ꎭ', 11706 => 'ꎮ', 11707 => 'ꎯ', 11708 => 'ꎰ', 11709 => 'ꎱ', 11710 => 'ꎲ', 11711 => 'ꎳ', 11712 => 'ꎴ', 11713 => 'ꎵ', 11714 => 'ꎶ', 11715 => 'ꎷ', 11716 => 'ꎸ', 11717 => 'ꎹ', 11718 => 'ꎺ', 11719 => 'ꎻ', 11720 => 'ꎼ', 11721 => 'ꎽ', 11722 => 'ꎾ', 11723 => 'ꎿ', 11724 => 'ꏀ', 11725 => 'ꏁ', 11726 => 'ꏂ', 11727 => 'ꏃ', 11728 => 'ꏄ', 11729 => 'ꏅ', 11730 => 'ꏆ', 11731 => 'ꏇ', 11732 => 'ꏈ', 11733 => 'ꏉ', 11734 => 'ꏊ', 11735 => 'ꏋ', 11736 => 'ꏌ', 11737 => 'ꏍ', 11738 => 'ꏎ', 11739 => 'ꏏ', 11740 => 'ꏐ', 11741 => 'ꏑ', 11742 => 'ꏒ', 11743 => 'ꏓ', 11744 => 'ꏔ', 11745 => 'ꏕ', 11746 => 'ꏖ', 11747 => 'ꏗ', 11748 => 'ꏘ', 11749 => 'ꏙ', 11750 => 'ꏚ', 11751 => 'ꏛ', 11752 => 'ꏜ', 11753 => 'ꏝ', 11754 => 'ꏞ', 11755 => 'ꏟ', 11756 => 'ꏠ', 11757 => 'ꏡ', 11758 => 'ꏢ', 11759 => 'ꏣ', 11760 => 'ꏤ', 11761 => 'ꏥ', 11762 => 'ꏦ', 11763 => 'ꏧ', 11764 => 'ꏨ', 11765 => 'ꏩ', 11766 => 'ꏪ', 11767 => 'ꏫ', 11768 => 'ꏬ', 11769 => 'ꏭ', 11770 => 'ꏮ', 11771 => 'ꏯ', 11772 => 'ꏰ', 11773 => 'ꏱ', 11774 => 'ꏲ', 11775 => 'ꏳ', 11776 => 'ꏴ', 11777 => 'ꏵ', 11778 => 'ꏶ', 11779 => 'ꏷ', 11780 => 'ꏸ', 11781 => 'ꏹ', 11782 => 'ꏺ', 11783 => 'ꏻ', 11784 => 'ꏼ', 11785 => 'ꏽ', 11786 => 'ꏾ', 11787 => 'ꏿ', 11788 => 'ꐀ', 11789 => 'ꐁ', 11790 => 'ꐂ', 11791 => 'ꐃ', 11792 => 'ꐄ', 11793 => 'ꐅ', 11794 => 'ꐆ', 11795 => 'ꐇ', 11796 => 'ꐈ', 11797 => 'ꐉ', 11798 => 'ꐊ', 11799 => 'ꐋ', 11800 => 'ꐌ', 11801 => 'ꐍ', 11802 => 'ꐎ', 11803 => 'ꐏ', 11804 => 'ꐐ', 11805 => 'ꐑ', 11806 => 'ꐒ', 11807 => 'ꐓ', 11808 => 'ꐔ', 11809 => 'ꐕ', 11810 => 'ꐖ', 11811 => 'ꐗ', 11812 => 'ꐘ', 11813 => 'ꐙ', 11814 => 'ꐚ', 11815 => 'ꐛ', 11816 => 'ꐜ', 11817 => 'ꐝ', 11818 => 'ꐞ', 11819 => 'ꐟ', 11820 => 'ꐠ', 11821 => 'ꐡ', 11822 => 'ꐢ', 11823 => 'ꐣ', 11824 => 'ꐤ', 11825 => 'ꐥ', 11826 => 'ꐦ', 11827 => 'ꐧ', 11828 => 'ꐨ', 11829 => 'ꐩ', 11830 => 'ꐪ', 11831 => 'ꐫ', 11832 => 'ꐬ', 11833 => 'ꐭ', 11834 => 'ꐮ', 11835 => 'ꐯ', 11836 => 'ꐰ', 11837 => 'ꐱ', 11838 => 'ꐲ', 11839 => 'ꐳ', 11840 => 'ꐴ', 11841 => 'ꐵ', 11842 => 'ꐶ', 11843 => 'ꐷ', 11844 => 'ꐸ', 11845 => 'ꐹ', 11846 => 'ꐺ', 11847 => 'ꐻ', 11848 => 'ꐼ', 11849 => 'ꐽ', 11850 => 'ꐾ', 11851 => 'ꐿ', 11852 => 'ꑀ', 11853 => 'ꑁ', 11854 => 'ꑂ', 11855 => 'ꑃ', 11856 => 'ꑄ', 11857 => 'ꑅ', 11858 => 'ꑆ', 11859 => 'ꑇ', 11860 => 'ꑈ', 11861 => 'ꑉ', 11862 => 'ꑊ', 11863 => 'ꑋ', 11864 => 'ꑌ', 11865 => 'ꑍ', 11866 => 'ꑎ', 11867 => 'ꑏ', 11868 => 'ꑐ', 11869 => 'ꑑ', 11870 => 'ꑒ', 11871 => 'ꑓ', 11872 => 'ꑔ', 11873 => 'ꑕ', 11874 => 'ꑖ', 11875 => 'ꑗ', 11876 => 'ꑘ', 11877 => 'ꑙ', 11878 => 'ꑚ', 11879 => 'ꑛ', 11880 => 'ꑜ', 11881 => 'ꑝ', 11882 => 'ꑞ', 11883 => 'ꑟ', 11884 => 'ꑠ', 11885 => 'ꑡ', 11886 => 'ꑢ', 11887 => 'ꑣ', 11888 => 'ꑤ', 11889 => 'ꑥ', 11890 => 'ꑦ', 11891 => 'ꑧ', 11892 => 'ꑨ', 11893 => 'ꑩ', 11894 => 'ꑪ', 11895 => 'ꑫ', 11896 => 'ꑬ', 11897 => 'ꑭ', 11898 => 'ꑮ', 11899 => 'ꑯ', 11900 => 'ꑰ', 11901 => 'ꑱ', 11902 => 'ꑲ', 11903 => 'ꑳ', 11904 => 'ꑴ', 11905 => 'ꑵ', 11906 => 'ꑶ', 11907 => 'ꑷ', 11908 => 'ꑸ', 11909 => 'ꑹ', 11910 => 'ꑺ', 11911 => 'ꑻ', 11912 => 'ꑼ', 11913 => 'ꑽ', 11914 => 'ꑾ', 11915 => 'ꑿ', 11916 => 'ꒀ', 11917 => 'ꒁ', 11918 => 'ꒂ', 11919 => 'ꒃ', 11920 => 'ꒄ', 11921 => 'ꒅ', 11922 => 'ꒆ', 11923 => 'ꒇ', 11924 => 'ꒈ', 11925 => 'ꒉ', 11926 => 'ꒊ', 11927 => 'ꒋ', 11928 => 'ꒌ', 11929 => 'ꓸ', 11930 => 'ꓹ', 11931 => 'ꓺ', 11932 => 'ꓻ', 11933 => 'ꓽ', 11934 => 'ꓼ', 11935 => 'ꓐ', 11936 => 'ꓑ', 11937 => 'ꓒ', 11938 => 'ꓓ', 11939 => 'ꓔ', 11940 => 'ꓕ', 11941 => 'ꓖ', 11942 => 'ꓗ', 11943 => 'ꓘ', 11944 => 'ꓙ', 11945 => 'ꓚ', 11946 => 'ꓛ', 11947 => 'ꓜ', 11948 => 'ꓝ', 11949 => 'ꓞ', 11950 => 'ꓟ', 11951 => 'ꓠ', 11952 => 'ꓡ', 11953 => 'ꓢ', 11954 => 'ꓣ', 11955 => 'ꓤ', 11956 => 'ꓥ', 11957 => 'ꓦ', 11958 => 'ꓧ', 11959 => 'ꓨ', 11960 => 'ꓩ', 11961 => 'ꓫ', 11962 => 'ꓭ', 11963 => 'ꓪ', 11964 => 'ꓬ', 11965 => 'ꓮ', 11966 => 'ꓯ', 11967 => 'ꓰ', 11968 => 'ꓱ', 11969 => 'ꓲ', 11970 => 'ꓳ', 11971 => 'ꓴ', 11972 => 'ꓵ', 11973 => 'ꓶ', 11974 => 'ꓷ', 11975 => '𐊀', 11976 => '𐊁', 11977 => '𐊂', 11978 => '𐊃', 11979 => '𐊄', 11980 => '𐊅', 11981 => '𐊆', 11982 => '𐊇', 11983 => '𐊈', 11984 => '𐊉', 11985 => '𐊊', 11986 => '𐊋', 11987 => '𐊌', 11988 => '𐊍', 11989 => '𐊎', 11990 => '𐊏', 11991 => '𐊐', 11992 => '𐊑', 11993 => '𐊒', 11994 => '𐊓', 11995 => '𐊔', 11996 => '𐊕', 11997 => '𐊖', 11998 => '𐊗', 11999 => '𐊘', 12000 => '𐊙', 12001 => '𐊚', 12002 => '𐊛', 12003 => '𐊜', 12004 => '𐊠', 12005 => '𐊡', 12006 => '𐊢', 12007 => '𐊣', 12008 => '𐊤', 12009 => '𐊥', 12010 => '𐊦', 12011 => '𐊧', 12012 => '𐊨', 12013 => '𐊩', 12014 => '𐊪', 12015 => '𐊫', 12016 => '𐊬', 12017 => '𐊭', 12018 => '𐊮', 12019 => '𐊯', 12020 => '𐊰', 12021 => '𐊱', 12022 => '𐊲', 12023 => '𐊳', 12024 => '𐊴', 12025 => '𐊵', 12026 => '𐊶', 12027 => '𐊷', 12028 => '𐊸', 12029 => '𐊹', 12030 => '𐊺', 12031 => '𐊻', 12032 => '𐊼', 12033 => '𐊽', 12034 => '𐊾', 12035 => '𐊿', 12036 => '𐋀', 12037 => '𐋁', 12038 => '𐋂', 12039 => '𐋃', 12040 => '𐋄', 12041 => '𐋅', 12042 => '𐋆', 12043 => '𐋇', 12044 => '𐋈', 12045 => '𐋉', 12046 => '𐋊', 12047 => '𐋋', 12048 => '𐋌', 12049 => '𐋍', 12050 => '𐋎', 12051 => '𐋏', 12052 => '𐋐', 12053 => '𐤠', 12054 => '𐤡', 12055 => '𐤢', 12056 => '𐤣', 12057 => '𐤤', 12058 => '𐤥', 12059 => '𐤦', 12060 => '𐤧', 12061 => '𐤨', 12062 => '𐤩', 12063 => '𐤪', 12064 => '𐤫', 12065 => '𐤬', 12066 => '𐤭', 12067 => '𐤮', 12068 => '𐤯', 12069 => '𐤰', 12070 => '𐤱', 12071 => '𐤲', 12072 => '𐤳', 12073 => '𐤴', 12074 => '𐤵', 12075 => '𐤶', 12076 => '𐤷', 12077 => '𐤸', 12078 => '𐤹', 12079 => '𐌀', 12080 => '𐌁', 12081 => '𐌂', 12082 => '𐌃', 12083 => '𐌄', 12084 => '𐌅', 12085 => '𐌆', 12086 => '𐌇', 12087 => '𐌈', 12088 => '𐌉', 12089 => '𐌊', 12090 => '𐌋', 12091 => '𐌌', 12092 => '𐌍', 12093 => '𐌎', 12094 => '𐌏', 12095 => '𐌐', 12096 => '𐌑', 12097 => '𐌒', 12098 => '𐌓', 12099 => '𐌔', 12100 => '𐌕', 12101 => '𐌖', 12102 => '𐌗', 12103 => '𐌘', 12104 => '𐌙', 12105 => '𐌚', 12106 => '𐌛', 12107 => '𐌜', 12108 => '𐌝', 12109 => '𐌞', 12110 => '𐌰', 12111 => '𐌱', 12112 => '𐌲', 12113 => '𐌳', 12114 => '𐌴', 12115 => '𐌵', 12116 => '𐌶', 12117 => '𐌷', 12118 => '𐌸', 12119 => '𐌹', 12120 => '𐌺', 12121 => '𐌻', 12122 => '𐌼', 12123 => '𐌽', 12124 => '𐌾', 12125 => '𐌿', 12126 => '𐍀', 12127 => '𐍁', 12128 => '𐍂', 12129 => '𐍃', 12130 => '𐍄', 12131 => '𐍅', 12132 => '𐍆', 12133 => '𐍇', 12134 => '𐍈', 12135 => '𐍉', 12136 => '𐍊', 12137 => '𐐀', 12138 => '𐐁', 12139 => '𐐂', 12140 => '𐐃', 12141 => '𐐄', 12142 => '𐐅', 12143 => '𐐆', 12144 => '𐐇', 12145 => '𐐈', 12146 => '𐐉', 12147 => '𐐊', 12148 => '𐐋', 12149 => '𐐌', 12150 => '𐐍', 12151 => '𐐎', 12152 => '𐐏', 12153 => '𐐐', 12154 => '𐐑', 12155 => '𐐒', 12156 => '𐐓', 12157 => '𐐔', 12158 => '𐐕', 12159 => '𐐖', 12160 => '𐐗', 12161 => '𐐘', 12162 => '𐐙', 12163 => '𐐚', 12164 => '𐐛', 12165 => '𐐜', 12166 => '𐐝', 12167 => '𐐞', 12168 => '𐐟', 12169 => '𐐠', 12170 => '𐐡', 12171 => '𐐢', 12172 => '𐐣', 12173 => '𐐤', 12174 => '𐐥', 12175 => '𐐦', 12176 => '𐐧', 12177 => '𐑐', 12178 => '𐑑', 12179 => '𐑒', 12180 => '𐑓', 12181 => '𐑔', 12182 => '𐑕', 12183 => '𐑖', 12184 => '𐑗', 12185 => '𐑘', 12186 => '𐑙', 12187 => '𐑚', 12188 => '𐑛', 12189 => '𐑜', 12190 => '𐑝', 12191 => '𐑞', 12192 => '𐑟', 12193 => '𐑠', 12194 => '𐑡', 12195 => '𐑢', 12196 => '𐑣', 12197 => '𐑤', 12198 => '𐑥', 12199 => '𐑦', 12200 => '𐑧', 12201 => '𐑨', 12202 => '𐑩', 12203 => '𐑪', 12204 => '𐑫', 12205 => '𐑬', 12206 => '𐑭', 12207 => '𐑮', 12208 => '𐑯', 12209 => '𐑰', 12210 => '𐑱', 12211 => '𐑲', 12212 => '𐑳', 12213 => '𐑴', 12214 => '𐑵', 12215 => '𐑶', 12216 => '𐑷', 12217 => '𐑸', 12218 => '𐑹', 12219 => '𐑺', 12220 => '𐑻', 12221 => '𐑼', 12222 => '𐑽', 12223 => '𐑾', 12224 => '𐑿', 12225 => '𐒀', 12226 => '𐒁', 12227 => '𐒂', 12228 => '𐒃', 12229 => '𐒄', 12230 => '𐒅', 12231 => '𐒆', 12232 => '𐒇', 12233 => '𐒈', 12234 => '𐒉', 12235 => '𐒊', 12236 => '𐒋', 12237 => '𐒌', 12238 => '𐒍', 12239 => '𐒎', 12240 => '𐒏', 12241 => '𐒐', 12242 => '𐒑', 12243 => '𐒒', 12244 => '𐒓', 12245 => '𐒔', 12246 => '𐒕', 12247 => '𐒖', 12248 => '𐒗', 12249 => '𐒘', 12250 => '𐒙', 12251 => '𐒚', 12252 => '𐒛', 12253 => '𐒜', 12254 => '𐒝', 12255 => '𐀀', 12256 => '𐀁', 12257 => '𐀂', 12258 => '𐀃', 12259 => '𐀄', 12260 => '𐀅', 12261 => '𐀆', 12262 => '𐀇', 12263 => '𐀈', 12264 => '𐀉', 12265 => '𐀊', 12266 => '𐀋', 12267 => '𐀍', 12268 => '𐀎', 12269 => '𐀏', 12270 => '𐀐', 12271 => '𐀑', 12272 => '𐀒', 12273 => '𐀓', 12274 => '𐀔', 12275 => '𐀕', 12276 => '𐀖', 12277 => '𐀗', 12278 => '𐀘', 12279 => '𐀙', 12280 => '𐀚', 12281 => '𐀛', 12282 => '𐀜', 12283 => '𐀝', 12284 => '𐀞', 12285 => '𐀟', 12286 => '𐀠', 12287 => '𐀡', 12288 => '𐀢', 12289 => '𐀣', 12290 => '𐀤', 12291 => '𐀥', 12292 => '𐀦', 12293 => '𐀨', 12294 => '𐀩', 12295 => '𐀪', 12296 => '𐀫', 12297 => '𐀬', 12298 => '𐀭', 12299 => '𐀮', 12300 => '𐀯', 12301 => '𐀰', 12302 => '𐀱', 12303 => '𐀲', 12304 => '𐀳', 12305 => '𐀴', 12306 => '𐀵', 12307 => '𐀶', 12308 => '𐀷', 12309 => '𐀸', 12310 => '𐀹', 12311 => '𐀺', 12312 => '𐀼', 12313 => '𐀽', 12314 => '𐀿', 12315 => '𐁀', 12316 => '𐁁', 12317 => '𐁂', 12318 => '𐁃', 12319 => '𐁄', 12320 => '𐁅', 12321 => '𐁆', 12322 => '𐁇', 12323 => '𐁈', 12324 => '𐁉', 12325 => '𐁊', 12326 => '𐁋', 12327 => '𐁌', 12328 => '𐁍', 12329 => '𐁐', 12330 => '𐁑', 12331 => '𐁒', 12332 => '𐁓', 12333 => '𐁔', 12334 => '𐁕', 12335 => '𐁖', 12336 => '𐁗', 12337 => '𐁘', 12338 => '𐁙', 12339 => '𐁚', 12340 => '𐁛', 12341 => '𐁜', 12342 => '𐁝', 12343 => '𐂀', 12344 => '𐂁', 12345 => '𐂂', 12346 => '𐂃', 12347 => '𐂄', 12348 => '𐂅', 12349 => '𐂆', 12350 => '𐂇', 12351 => '𐂈', 12352 => '𐂉', 12353 => '𐂊', 12354 => '𐂋', 12355 => '𐂌', 12356 => '𐂍', 12357 => '𐂎', 12358 => '𐂏', 12359 => '𐂐', 12360 => '𐂑', 12361 => '𐂒', 12362 => '𐂓', 12363 => '𐂔', 12364 => '𐂕', 12365 => '𐂖', 12366 => '𐂗', 12367 => '𐂘', 12368 => '𐂙', 12369 => '𐂚', 12370 => '𐂛', 12371 => '𐂜', 12372 => '𐂝', 12373 => '𐂞', 12374 => '𐂟', 12375 => '𐂠', 12376 => '𐂡', 12377 => '𐂢', 12378 => '𐂣', 12379 => '𐂤', 12380 => '𐂥', 12381 => '𐂦', 12382 => '𐂧', 12383 => '𐂨', 12384 => '𐂩', 12385 => '𐂪', 12386 => '𐂫', 12387 => '𐂬', 12388 => '𐂭', 12389 => '𐂮', 12390 => '𐂯', 12391 => '𐂰', 12392 => '𐂱', 12393 => '𐂲', 12394 => '𐂳', 12395 => '𐂴', 12396 => '𐂵', 12397 => '𐂶', 12398 => '𐂷', 12399 => '𐂸', 12400 => '𐂹', 12401 => '𐂺', 12402 => '𐂻', 12403 => '𐂼', 12404 => '𐂽', 12405 => '𐂾', 12406 => '𐂿', 12407 => '𐃀', 12408 => '𐃁', 12409 => '𐃂', 12410 => '𐃃', 12411 => '𐃄', 12412 => '𐃅', 12413 => '𐃆', 12414 => '𐃇', 12415 => '𐃈', 12416 => '𐃉', 12417 => '𐃊', 12418 => '𐃋', 12419 => '𐃌', 12420 => '𐃍', 12421 => '𐃎', 12422 => '𐃏', 12423 => '𐃐', 12424 => '𐃑', 12425 => '𐃒', 12426 => '𐃓', 12427 => '𐃔', 12428 => '𐃕', 12429 => '𐃖', 12430 => '𐃗', 12431 => '𐃘', 12432 => '𐃙', 12433 => '𐃚', 12434 => '𐃛', 12435 => '𐃜', 12436 => '𐃝', 12437 => '𐃞', 12438 => '𐃟', 12439 => '𐃠', 12440 => '𐃡', 12441 => '𐃢', 12442 => '𐃣', 12443 => '𐃤', 12444 => '𐃥', 12445 => '𐃦', 12446 => '𐃧', 12447 => '𐃨', 12448 => '𐃩', 12449 => '𐃪', 12450 => '𐃫', 12451 => '𐃬', 12452 => '𐃭', 12453 => '𐃮', 12454 => '𐃯', 12455 => '𐃰', 12456 => '𐃱', 12457 => '𐃲', 12458 => '𐃳', 12459 => '𐃴', 12460 => '𐃵', 12461 => '𐃶', 12462 => '𐃷', 12463 => '𐃸', 12464 => '𐃹', 12465 => '𐃺', 12466 => '𐠀', 12467 => '𐠁', 12468 => '𐠂', 12469 => '𐠃', 12470 => '𐠄', 12471 => '𐠅', 12472 => '𐠈', 12473 => '𐠊', 12474 => '𐠋', 12475 => '𐠌', 12476 => '𐠍', 12477 => '𐠎', 12478 => '𐠏', 12479 => '𐠐', 12480 => '𐠑', 12481 => '𐠒', 12482 => '𐠓', 12483 => '𐠔', 12484 => '𐠕', 12485 => '𐠖', 12486 => '𐠗', 12487 => '𐠘', 12488 => '𐠙', 12489 => '𐠚', 12490 => '𐠛', 12491 => '𐠜', 12492 => '𐠝', 12493 => '𐠞', 12494 => '𐠟', 12495 => '𐠠', 12496 => '𐠡', 12497 => '𐠢', 12498 => '𐠣', 12499 => '𐠤', 12500 => '𐠥', 12501 => '𐠦', 12502 => '𐠧', 12503 => '𐠨', 12504 => '𐠩', 12505 => '𐠪', 12506 => '𐠫', 12507 => '𐠬', 12508 => '𐠭', 12509 => '𐠮', 12510 => '𐠯', 12511 => '𐠰', 12512 => '𐠱', 12513 => '𐠲', 12514 => '𐠳', 12515 => '𐠴', 12516 => '𐠵', 12517 => '𐠷', 12518 => '𐠸', 12519 => '𐠼', 12520 => '𐠿', 12521 => '𐩠', 12522 => '𐩡', 12523 => '𐩢', 12524 => '𐩣', 12525 => '𐩤', 12526 => '𐩥', 12527 => '𐩦', 12528 => '𐩧', 12529 => '𐩨', 12530 => '𐩩', 12531 => '𐩪', 12532 => '𐩫', 12533 => '𐩬', 12534 => '𐩭', 12535 => '𐩮', 12536 => '𐩯', 12537 => '𐩰', 12538 => '𐩱', 12539 => '𐩲', 12540 => '𐩳', 12541 => '𐩴', 12542 => '𐩵', 12543 => '𐩶', 12544 => '𐩷', 12545 => '𐩸', 12546 => '𐩹', 12547 => '𐩺', 12548 => '𐩻', 12549 => '𐩼', 12550 => '𐬀', 12551 => '𐬁', 12552 => '𐬂', 12553 => '𐬃', 12554 => '𐬄', 12555 => '𐬅', 12556 => '𐬆', 12557 => '𐬇', 12558 => '𐬈', 12559 => '𐬉', 12560 => '𐬊', 12561 => '𐬋', 12562 => '𐬌', 12563 => '𐬍', 12564 => '𐬎', 12565 => '𐬏', 12566 => '𐬐', 12567 => '𐬑', 12568 => '𐬒', 12569 => '𐬓', 12570 => '𐬔', 12571 => '𐬕', 12572 => '𐬖', 12573 => '𐬗', 12574 => '𐬘', 12575 => '𐬙', 12576 => '𐬚', 12577 => '𐬛', 12578 => '𐬜', 12579 => '𐬝', 12580 => '𐬞', 12581 => '𐬟', 12582 => '𐬠', 12583 => '𐬡', 12584 => '𐬢', 12585 => '𐬣', 12586 => '𐬤', 12587 => '𐬥', 12588 => '𐬦', 12589 => '𐬧', 12590 => '𐬨', 12591 => '𐬩', 12592 => '𐬪', 12593 => '𐬫', 12594 => '𐬬', 12595 => '𐬭', 12596 => '𐬯', 12597 => '𐬰', 12598 => '𐬱', 12599 => '𐬲', 12600 => '𐬳', 12601 => '𐬴', 12602 => '𐬵', 12603 => '𐡀', 12604 => '𐡁', 12605 => '𐡂', 12606 => '𐡃', 12607 => '𐡄', 12608 => '𐡅', 12609 => '𐡆', 12610 => '𐡇', 12611 => '𐡈', 12612 => '𐡉', 12613 => '𐡊', 12614 => '𐡋', 12615 => '𐡌', 12616 => '𐡍', 12617 => '𐡎', 12618 => '𐡏', 12619 => '𐡐', 12620 => '𐡑', 12621 => '𐡒', 12622 => '𐡓', 12623 => '𐡔', 12624 => '𐡕', 12625 => '𐭀', 12626 => '𐭁', 12627 => '𐭂', 12628 => '𐭃', 12629 => '𐭄', 12630 => '𐭅', 12631 => '𐭆', 12632 => '𐭇', 12633 => '𐭈', 12634 => '𐭉', 12635 => '𐭊', 12636 => '𐭋', 12637 => '𐭌', 12638 => '𐭍', 12639 => '𐭎', 12640 => '𐭏', 12641 => '𐭐', 12642 => '𐭑', 12643 => '𐭒', 12644 => '𐭓', 12645 => '𐭔', 12646 => '𐭕', 12647 => '𐭠', 12648 => '𐭡', 12649 => '𐭢', 12650 => '𐭣', 12651 => '𐭤', 12652 => '𐭥', 12653 => '𐭦', 12654 => '𐭧', 12655 => '𐭨', 12656 => '𐭩', 12657 => '𐭪', 12658 => '𐭫', 12659 => '𐭬', 12660 => '𐭭', 12661 => '𐭮', 12662 => '𐭯', 12663 => '𐭰', 12664 => '𐭱', 12665 => '𐭲', 12666 => '𐎀', 12667 => '𐎁', 12668 => '𐎂', 12669 => '𐎃', 12670 => '𐎄', 12671 => '𐎅', 12672 => '𐎆', 12673 => '𐎇', 12674 => '𐎈', 12675 => '𐎉', 12676 => '𐎊', 12677 => '𐎋', 12678 => '𐎌', 12679 => '𐎍', 12680 => '𐎎', 12681 => '𐎏', 12682 => '𐎐', 12683 => '𐎑', 12684 => '𐎒', 12685 => '𐎓', 12686 => '𐎔', 12687 => '𐎕', 12688 => '𐎖', 12689 => '𐎗', 12690 => '𐎘', 12691 => '𐎙', 12692 => '𐎚', 12693 => '𐎛', 12694 => '𐎜', 12695 => '𐎝', 12696 => '𐎠', 12697 => '𐎡', 12698 => '𐎢', 12699 => '𐎣', 12700 => '𐎤', 12701 => '𐎥', 12702 => '𐎦', 12703 => '𐎧', 12704 => '𐎨', 12705 => '𐎩', 12706 => '𐎪', 12707 => '𐎫', 12708 => '𐎬', 12709 => '𐎭', 12710 => '𐎮', 12711 => '𐎯', 12712 => '𐎰', 12713 => '𐎱', 12714 => '𐎲', 12715 => '𐎳', 12716 => '𐎴', 12717 => '𐎵', 12718 => '𐎶', 12719 => '𐎷', 12720 => '𐎸', 12721 => '𐎹', 12722 => '𐎺', 12723 => '𐎻', 12724 => '𐎼', 12725 => '𐎽', 12726 => '𐎾', 12727 => '𐎿', 12728 => '𐏀', 12729 => '𐏁', 12730 => '𐏂', 12731 => '𐏃', 12732 => '𐏈', 12733 => '𐏉', 12734 => '𐏊', 12735 => '𐏋', 12736 => '𐏌', 12737 => '𐏍', 12738 => '𐏎', 12739 => '𐏏', 12740 => '𒀀', 12741 => '𒀁', 12742 => '𒀂', 12743 => '𒀃', 12744 => '𒀄', 12745 => '𒀅', 12746 => '𒀆', 12747 => '𒀇', 12748 => '𒀈', 12749 => '𒀉', 12750 => '𒀊', 12751 => '𒀋', 12752 => '𒀌', 12753 => '𒀍', 12754 => '𒀎', 12755 => '𒀏', 12756 => '𒀐', 12757 => '𒀑', 12758 => '𒀒', 12759 => '𒀓', 12760 => '𒀔', 12761 => '𒀕', 12762 => '𒀖', 12763 => '𒀗', 12764 => '𒀘', 12765 => '𒀙', 12766 => '𒀚', 12767 => '𒀛', 12768 => '𒀜', 12769 => '𒀝', 12770 => '𒀞', 12771 => '𒀟', 12772 => '𒀠', 12773 => '𒀡', 12774 => '𒀢', 12775 => '𒀣', 12776 => '𒀤', 12777 => '𒀥', 12778 => '𒀦', 12779 => '𒀧', 12780 => '𒀨', 12781 => '𒀩', 12782 => '𒀪', 12783 => '𒀫', 12784 => '𒀬', 12785 => '𒀭', 12786 => '𒀮', 12787 => '𒀯', 12788 => '𒀰', 12789 => '𒀱', 12790 => '𒀲', 12791 => '𒀳', 12792 => '𒀴', 12793 => '𒀵', 12794 => '𒀶', 12795 => '𒀷', 12796 => '𒀸', 12797 => '𒀹', 12798 => '𒀺', 12799 => '𒀻', 12800 => '𒀼', 12801 => '𒀽', 12802 => '𒀾', 12803 => '𒀿', 12804 => '𒁀', 12805 => '𒁁', 12806 => '𒁂', 12807 => '𒁃', 12808 => '𒁄', 12809 => '𒁅', 12810 => '𒁆', 12811 => '𒁇', 12812 => '𒁈', 12813 => '𒁉', 12814 => '𒁊', 12815 => '𒁋', 12816 => '𒁌', 12817 => '𒁍', 12818 => '𒁎', 12819 => '𒁏', 12820 => '𒁐', 12821 => '𒁑', 12822 => '𒁒', 12823 => '𒁓', 12824 => '𒁔', 12825 => '𒁕', 12826 => '𒁖', 12827 => '𒁗', 12828 => '𒁘', 12829 => '𒁙', 12830 => '𒁚', 12831 => '𒁛', 12832 => '𒁜', 12833 => '𒁝', 12834 => '𒁞', 12835 => '𒁟', 12836 => '𒁠', 12837 => '𒁡', 12838 => '𒁢', 12839 => '𒁣', 12840 => '𒁤', 12841 => '𒁥', 12842 => '𒁦', 12843 => '𒁧', 12844 => '𒁨', 12845 => '𒁩', 12846 => '𒁪', 12847 => '𒁫', 12848 => '𒁬', 12849 => '𒁭', 12850 => '𒁮', 12851 => '𒁯', 12852 => '𒁰', 12853 => '𒁱', 12854 => '𒁲', 12855 => '𒁳', 12856 => '𒁴', 12857 => '𒁵', 12858 => '𒁶', 12859 => '𒁷', 12860 => '𒁸', 12861 => '𒁹', 12862 => '𒁺', 12863 => '𒁻', 12864 => '𒁼', 12865 => '𒁽', 12866 => '𒁾', 12867 => '𒁿', 12868 => '𒂀', 12869 => '𒂁', 12870 => '𒂂', 12871 => '𒂃', 12872 => '𒂄', 12873 => '𒂅', 12874 => '𒂆', 12875 => '𒂇', 12876 => '𒂈', 12877 => '𒂉', 12878 => '𒂊', 12879 => '𒂋', 12880 => '𒂌', 12881 => '𒂍', 12882 => '𒂎', 12883 => '𒂏', 12884 => '𒂐', 12885 => '𒂑', 12886 => '𒂒', 12887 => '𒂓', 12888 => '𒂔', 12889 => '𒂕', 12890 => '𒂖', 12891 => '𒂗', 12892 => '𒂘', 12893 => '𒂙', 12894 => '𒂚', 12895 => '𒂛', 12896 => '𒂜', 12897 => '𒂝', 12898 => '𒂞', 12899 => '𒂟', 12900 => '𒂠', 12901 => '𒂡', 12902 => '𒂢', 12903 => '𒂣', 12904 => '𒂤', 12905 => '𒂥', 12906 => '𒂦', 12907 => '𒂧', 12908 => '𒂨', 12909 => '𒂩', 12910 => '𒂪', 12911 => '𒂫', 12912 => '𒂬', 12913 => '𒂭', 12914 => '𒂮', 12915 => '𒂯', 12916 => '𒂰', 12917 => '𒂱', 12918 => '𒂲', 12919 => '𒂳', 12920 => '𒂴', 12921 => '𒂵', 12922 => '𒂶', 12923 => '𒂷', 12924 => '𒂸', 12925 => '𒂹', 12926 => '𒂺', 12927 => '𒂻', 12928 => '𒂼', 12929 => '𒂽', 12930 => '𒂾', 12931 => '𒂿', 12932 => '𒃀', 12933 => '𒃁', 12934 => '𒃂', 12935 => '𒃃', 12936 => '𒃄', 12937 => '𒃅', 12938 => '𒃆', 12939 => '𒃇', 12940 => '𒃈', 12941 => '𒃉', 12942 => '𒃊', 12943 => '𒃋', 12944 => '𒃌', 12945 => '𒃍', 12946 => '𒃎', 12947 => '𒃏', 12948 => '𒃐', 12949 => '𒃑', 12950 => '𒃒', 12951 => '𒃓', 12952 => '𒃔', 12953 => '𒃕', 12954 => '𒃖', 12955 => '𒃗', 12956 => '𒃘', 12957 => '𒃙', 12958 => '𒃚', 12959 => '𒃛', 12960 => '𒃜', 12961 => '𒃝', 12962 => '𒃞', 12963 => '𒃟', 12964 => '𒃠', 12965 => '𒃡', 12966 => '𒃢', 12967 => '𒃣', 12968 => '𒃤', 12969 => '𒃥', 12970 => '𒃦', 12971 => '𒃧', 12972 => '𒃨', 12973 => '𒃩', 12974 => '𒃪', 12975 => '𒃫', 12976 => '𒃬', 12977 => '𒃭', 12978 => '𒃮', 12979 => '𒃯', 12980 => '𒃰', 12981 => '𒃱', 12982 => '𒃲', 12983 => '𒃳', 12984 => '𒃴', 12985 => '𒃵', 12986 => '𒃶', 12987 => '𒃷', 12988 => '𒃸', 12989 => '𒃹', 12990 => '𒃺', 12991 => '𒃻', 12992 => '𒃼', 12993 => '𒃽', 12994 => '𒃾', 12995 => '𒃿', 12996 => '𒄀', 12997 => '𒄁', 12998 => '𒄂', 12999 => '𒄃', 13000 => '𒄄', 13001 => '𒄅', 13002 => '𒄆', 13003 => '𒄇', 13004 => '𒄈', 13005 => '𒄉', 13006 => '𒄊', 13007 => '𒄋', 13008 => '𒄌', 13009 => '𒄍', 13010 => '𒄎', 13011 => '𒄏', 13012 => '𒄐', 13013 => '𒄑', 13014 => '𒄒', 13015 => '𒄓', 13016 => '𒄔', 13017 => '𒄕', 13018 => '𒄖', 13019 => '𒄗', 13020 => '𒄘', 13021 => '𒄙', 13022 => '𒄚', 13023 => '𒄛', 13024 => '𒄜', 13025 => '𒄝', 13026 => '𒄞', 13027 => '𒄟', 13028 => '𒄠', 13029 => '𒄡', 13030 => '𒄢', 13031 => '𒄣', 13032 => '𒄤', 13033 => '𒄥', 13034 => '𒄦', 13035 => '𒄧', 13036 => '𒄨', 13037 => '𒄩', 13038 => '𒄪', 13039 => '𒄫', 13040 => '𒄬', 13041 => '𒄭', 13042 => '𒄮', 13043 => '𒄯', 13044 => '𒄰', 13045 => '𒄱', 13046 => '𒄲', 13047 => '𒄳', 13048 => '𒄴', 13049 => '𒄵', 13050 => '𒄶', 13051 => '𒄷', 13052 => '𒄸', 13053 => '𒄹', 13054 => '𒄺', 13055 => '𒄻', 13056 => '𒄼', 13057 => '𒄽', 13058 => '𒄾', 13059 => '𒄿', 13060 => '𒅀', 13061 => '𒅁', 13062 => '𒅂', 13063 => '𒅃', 13064 => '𒅄', 13065 => '𒅅', 13066 => '𒅆', 13067 => '𒅇', 13068 => '𒅈', 13069 => '𒅉', 13070 => '𒅊', 13071 => '𒅋', 13072 => '𒅌', 13073 => '𒅍', 13074 => '𒅎', 13075 => '𒅏', 13076 => '𒅐', 13077 => '𒅑', 13078 => '𒅒', 13079 => '𒅓', 13080 => '𒅔', 13081 => '𒅕', 13082 => '𒅖', 13083 => '𒅗', 13084 => '𒅘', 13085 => '𒅙', 13086 => '𒅚', 13087 => '𒅛', 13088 => '𒅜', 13089 => '𒅝', 13090 => '𒅞', 13091 => '𒅟', 13092 => '𒅠', 13093 => '𒅡', 13094 => '𒅢', 13095 => '𒅣', 13096 => '𒅤', 13097 => '𒅥', 13098 => '𒅦', 13099 => '𒅧', 13100 => '𒅨', 13101 => '𒅩', 13102 => '𒅪', 13103 => '𒅫', 13104 => '𒅬', 13105 => '𒅭', 13106 => '𒅮', 13107 => '𒅯', 13108 => '𒅰', 13109 => '𒅱', 13110 => '𒅲', 13111 => '𒅳', 13112 => '𒅴', 13113 => '𒅵', 13114 => '𒅶', 13115 => '𒅷', 13116 => '𒅸', 13117 => '𒅹', 13118 => '𒅺', 13119 => '𒅻', 13120 => '𒅼', 13121 => '𒅽', 13122 => '𒅾', 13123 => '𒅿', 13124 => '𒆀', 13125 => '𒆁', 13126 => '𒆂', 13127 => '𒆃', 13128 => '𒆄', 13129 => '𒆅', 13130 => '𒆆', 13131 => '𒆇', 13132 => '𒆈', 13133 => '𒆉', 13134 => '𒆊', 13135 => '𒆋', 13136 => '𒆌', 13137 => '𒆍', 13138 => '𒆎', 13139 => '𒆏', 13140 => '𒆐', 13141 => '𒆑', 13142 => '𒆒', 13143 => '𒆓', 13144 => '𒆔', 13145 => '𒆕', 13146 => '𒆖', 13147 => '𒆗', 13148 => '𒆘', 13149 => '𒆙', 13150 => '𒆚', 13151 => '𒆛', 13152 => '𒆜', 13153 => '𒆝', 13154 => '𒆞', 13155 => '𒆟', 13156 => '𒆠', 13157 => '𒆡', 13158 => '𒆢', 13159 => '𒆣', 13160 => '𒆤', 13161 => '𒆥', 13162 => '𒆦', 13163 => '𒆧', 13164 => '𒆨', 13165 => '𒆩', 13166 => '𒆪', 13167 => '𒆫', 13168 => '𒆬', 13169 => '𒆭', 13170 => '𒆮', 13171 => '𒆯', 13172 => '𒆰', 13173 => '𒆱', 13174 => '𒆲', 13175 => '𒆳', 13176 => '𒆴', 13177 => '𒆵', 13178 => '𒆶', 13179 => '𒆷', 13180 => '𒆸', 13181 => '𒆹', 13182 => '𒆺', 13183 => '𒆻', 13184 => '𒆼', 13185 => '𒆽', 13186 => '𒆾', 13187 => '𒆿', 13188 => '𒇀', 13189 => '𒇁', 13190 => '𒇂', 13191 => '𒇃', 13192 => '𒇄', 13193 => '𒇅', 13194 => '𒇆', 13195 => '𒇇', 13196 => '𒇈', 13197 => '𒇉', 13198 => '𒇊', 13199 => '𒇋', 13200 => '𒇌', 13201 => '𒇍', 13202 => '𒇎', 13203 => '𒇏', 13204 => '𒇐', 13205 => '𒇑', 13206 => '𒇒', 13207 => '𒇓', 13208 => '𒇔', 13209 => '𒇕', 13210 => '𒇖', 13211 => '𒇗', 13212 => '𒇘', 13213 => '𒇙', 13214 => '𒇚', 13215 => '𒇛', 13216 => '𒇜', 13217 => '𒇝', 13218 => '𒇞', 13219 => '𒇟', 13220 => '𒇠', 13221 => '𒇡', 13222 => '𒇢', 13223 => '𒇣', 13224 => '𒇤', 13225 => '𒇥', 13226 => '𒇦', 13227 => '𒇧', 13228 => '𒇨', 13229 => '𒇩', 13230 => '𒇪', 13231 => '𒇫', 13232 => '𒇬', 13233 => '𒇭', 13234 => '𒇮', 13235 => '𒇯', 13236 => '𒇰', 13237 => '𒇱', 13238 => '𒇲', 13239 => '𒇳', 13240 => '𒇴', 13241 => '𒇵', 13242 => '𒇶', 13243 => '𒇷', 13244 => '𒇸', 13245 => '𒇹', 13246 => '𒇺', 13247 => '𒇻', 13248 => '𒇼', 13249 => '𒇽', 13250 => '𒇾', 13251 => '𒇿', 13252 => '𒈀', 13253 => '𒈁', 13254 => '𒈂', 13255 => '𒈃', 13256 => '𒈄', 13257 => '𒈅', 13258 => '𒈆', 13259 => '𒈇', 13260 => '𒈈', 13261 => '𒈉', 13262 => '𒈊', 13263 => '𒈋', 13264 => '𒈌', 13265 => '𒈍', 13266 => '𒈎', 13267 => '𒈏', 13268 => '𒈐', 13269 => '𒈑', 13270 => '𒈒', 13271 => '𒈓', 13272 => '𒈔', 13273 => '𒈕', 13274 => '𒈖', 13275 => '𒈗', 13276 => '𒈘', 13277 => '𒈙', 13278 => '𒈚', 13279 => '𒈛', 13280 => '𒈜', 13281 => '𒈝', 13282 => '𒈞', 13283 => '𒈟', 13284 => '𒈠', 13285 => '𒈡', 13286 => '𒈢', 13287 => '𒈣', 13288 => '𒈤', 13289 => '𒈥', 13290 => '𒈦', 13291 => '𒈧', 13292 => '𒈨', 13293 => '𒈩', 13294 => '𒈪', 13295 => '𒈫', 13296 => '𒈬', 13297 => '𒈭', 13298 => '𒈮', 13299 => '𒈯', 13300 => '𒈰', 13301 => '𒈱', 13302 => '𒈲', 13303 => '𒈳', 13304 => '𒈴', 13305 => '𒈵', 13306 => '𒈶', 13307 => '𒈷', 13308 => '𒈸', 13309 => '𒈹', 13310 => '𒈺', 13311 => '𒈻', 13312 => '𒈼', 13313 => '𒈽', 13314 => '𒈾', 13315 => '𒈿', 13316 => '𒉀', 13317 => '𒉁', 13318 => '𒉂', 13319 => '𒉃', 13320 => '𒉄', 13321 => '𒉅', 13322 => '𒉆', 13323 => '𒉇', 13324 => '𒉈', 13325 => '𒉉', 13326 => '𒉊', 13327 => '𒉋', 13328 => '𒉌', 13329 => '𒉍', 13330 => '𒉎', 13331 => '𒉏', 13332 => '𒉐', 13333 => '𒉑', 13334 => '𒉒', 13335 => '𒉓', 13336 => '𒉔', 13337 => '𒉕', 13338 => '𒉖', 13339 => '𒉗', 13340 => '𒉘', 13341 => '𒉙', 13342 => '𒉚', 13343 => '𒉛', 13344 => '𒉜', 13345 => '𒉝', 13346 => '𒉞', 13347 => '𒉟', 13348 => '𒉠', 13349 => '𒉡', 13350 => '𒉢', 13351 => '𒉣', 13352 => '𒉤', 13353 => '𒉥', 13354 => '𒉦', 13355 => '𒉧', 13356 => '𒉨', 13357 => '𒉩', 13358 => '𒉪', 13359 => '𒉫', 13360 => '𒉬', 13361 => '𒉭', 13362 => '𒉮', 13363 => '𒉯', 13364 => '𒉰', 13365 => '𒉱', 13366 => '𒉲', 13367 => '𒉳', 13368 => '𒉴', 13369 => '𒉵', 13370 => '𒉶', 13371 => '𒉷', 13372 => '𒉸', 13373 => '𒉹', 13374 => '𒉺', 13375 => '𒉻', 13376 => '𒉼', 13377 => '𒉽', 13378 => '𒉾', 13379 => '𒉿', 13380 => '𒊀', 13381 => '𒊁', 13382 => '𒊂', 13383 => '𒊃', 13384 => '𒊄', 13385 => '𒊅', 13386 => '𒊆', 13387 => '𒊇', 13388 => '𒊈', 13389 => '𒊉', 13390 => '𒊊', 13391 => '𒊋', 13392 => '𒊌', 13393 => '𒊍', 13394 => '𒊎', 13395 => '𒊏', 13396 => '𒊐', 13397 => '𒊑', 13398 => '𒊒', 13399 => '𒊓', 13400 => '𒊔', 13401 => '𒊕', 13402 => '𒊖', 13403 => '𒊗', 13404 => '𒊘', 13405 => '𒊙', 13406 => '𒊚', 13407 => '𒊛', 13408 => '𒊜', 13409 => '𒊝', 13410 => '𒊞', 13411 => '𒊟', 13412 => '𒊠', 13413 => '𒊡', 13414 => '𒊢', 13415 => '𒊣', 13416 => '𒊤', 13417 => '𒊥', 13418 => '𒊦', 13419 => '𒊧', 13420 => '𒊨', 13421 => '𒊩', 13422 => '𒊪', 13423 => '𒊫', 13424 => '𒊬', 13425 => '𒊭', 13426 => '𒊮', 13427 => '𒊯', 13428 => '𒊰', 13429 => '𒊱', 13430 => '𒊲', 13431 => '𒊳', 13432 => '𒊴', 13433 => '𒊵', 13434 => '𒊶', 13435 => '𒊷', 13436 => '𒊸', 13437 => '𒊹', 13438 => '𒊺', 13439 => '𒊻', 13440 => '𒊼', 13441 => '𒊽', 13442 => '𒊾', 13443 => '𒊿', 13444 => '𒋀', 13445 => '𒋁', 13446 => '𒋂', 13447 => '𒋃', 13448 => '𒋄', 13449 => '𒋅', 13450 => '𒋆', 13451 => '𒋇', 13452 => '𒋈', 13453 => '𒋉', 13454 => '𒋊', 13455 => '𒋋', 13456 => '𒋌', 13457 => '𒋍', 13458 => '𒋎', 13459 => '𒋏', 13460 => '𒋐', 13461 => '𒋑', 13462 => '𒋒', 13463 => '𒋓', 13464 => '𒋔', 13465 => '𒋕', 13466 => '𒋖', 13467 => '𒋗', 13468 => '𒋘', 13469 => '𒋙', 13470 => '𒋚', 13471 => '𒋛', 13472 => '𒋜', 13473 => '𒋝', 13474 => '𒋞', 13475 => '𒋟', 13476 => '𒋠', 13477 => '𒋡', 13478 => '𒋢', 13479 => '𒋣', 13480 => '𒋤', 13481 => '𒋥', 13482 => '𒋦', 13483 => '𒋧', 13484 => '𒋨', 13485 => '𒋩', 13486 => '𒋪', 13487 => '𒋫', 13488 => '𒋬', 13489 => '𒋭', 13490 => '𒋮', 13491 => '𒋯', 13492 => '𒋰', 13493 => '𒋱', 13494 => '𒋲', 13495 => '𒋳', 13496 => '𒋴', 13497 => '𒋵', 13498 => '𒋶', 13499 => '𒋷', 13500 => '𒋸', 13501 => '𒋹', 13502 => '𒋺', 13503 => '𒋻', 13504 => '𒋼', 13505 => '𒋽', 13506 => '𒋾', 13507 => '𒋿', 13508 => '𒌀', 13509 => '𒌁', 13510 => '𒌂', 13511 => '𒌃', 13512 => '𒌄', 13513 => '𒌅', 13514 => '𒌆', 13515 => '𒌇', 13516 => '𒌈', 13517 => '𒌉', 13518 => '𒌊', 13519 => '𒌋', 13520 => '𒌌', 13521 => '𒌍', 13522 => '𒌎', 13523 => '𒌏', 13524 => '𒌐', 13525 => '𒌑', 13526 => '𒌒', 13527 => '𒌓', 13528 => '𒌔', 13529 => '𒌕', 13530 => '𒌖', 13531 => '𒌗', 13532 => '𒌘', 13533 => '𒌙', 13534 => '𒌚', 13535 => '𒌛', 13536 => '𒌜', 13537 => '𒌝', 13538 => '𒌞', 13539 => '𒌟', 13540 => '𒌠', 13541 => '𒌡', 13542 => '𒌢', 13543 => '𒌣', 13544 => '𒌤', 13545 => '𒌥', 13546 => '𒌦', 13547 => '𒌧', 13548 => '𒌨', 13549 => '𒌩', 13550 => '𒌪', 13551 => '𒌫', 13552 => '𒌬', 13553 => '𒌭', 13554 => '𒌮', 13555 => '𒌯', 13556 => '𒌰', 13557 => '𒌱', 13558 => '𒌲', 13559 => '𒌳', 13560 => '𒌴', 13561 => '𒌵', 13562 => '𒌶', 13563 => '𒌷', 13564 => '𒌸', 13565 => '𒌹', 13566 => '𒌺', 13567 => '𒌻', 13568 => '𒌼', 13569 => '𒌽', 13570 => '𒌾', 13571 => '𒌿', 13572 => '𒍀', 13573 => '𒍁', 13574 => '𒍂', 13575 => '𒍃', 13576 => '𒍄', 13577 => '𒍅', 13578 => '𒍆', 13579 => '𒍇', 13580 => '𒍈', 13581 => '𒍉', 13582 => '𒍊', 13583 => '𒍋', 13584 => '𒍌', 13585 => '𒍍', 13586 => '𒍎', 13587 => '𒍏', 13588 => '𒍐', 13589 => '𒍑', 13590 => '𒍒', 13591 => '𒍓', 13592 => '𒍔', 13593 => '𒍕', 13594 => '𒍖', 13595 => '𒍗', 13596 => '𒍘', 13597 => '𒍙', 13598 => '𒍚', 13599 => '𒍛', 13600 => '𒍜', 13601 => '𒍝', 13602 => '𒍞', 13603 => '𒍟', 13604 => '𒍠', 13605 => '𒍡', 13606 => '𒍢', 13607 => '𒍣', 13608 => '𒍤', 13609 => '𒍥', 13610 => '𒍦', 13611 => '𒍧', 13612 => '𒍨', 13613 => '𒍩', 13614 => '𒍪', 13615 => '𒍫', 13616 => '𒍬', 13617 => '𒍭', 13618 => '𒍮', 13619 => '𓀀', 13620 => '𓀁', 13621 => '𓀂', 13622 => '𓀃', 13623 => '𓀄', 13624 => '𓀅', 13625 => '𓀆', 13626 => '𓀇', 13627 => '𓀈', 13628 => '𓀉', 13629 => '𓀊', 13630 => '𓀋', 13631 => '𓀌', 13632 => '𓀍', 13633 => '𓀎', 13634 => '𓀏', 13635 => '𓀐', 13636 => '𓀑', 13637 => '𓀒', 13638 => '𓀓', 13639 => '𓀔', 13640 => '𓀕', 13641 => '𓀖', 13642 => '𓀗', 13643 => '𓀘', 13644 => '𓀙', 13645 => '𓀚', 13646 => '𓀛', 13647 => '𓀜', 13648 => '𓀝', 13649 => '𓀞', 13650 => '𓀟', 13651 => '𓀠', 13652 => '𓀡', 13653 => '𓀢', 13654 => '𓀣', 13655 => '𓀤', 13656 => '𓀥', 13657 => '𓀦', 13658 => '𓀧', 13659 => '𓀨', 13660 => '𓀩', 13661 => '𓀪', 13662 => '𓀫', 13663 => '𓀬', 13664 => '𓀭', 13665 => '𓀮', 13666 => '𓀯', 13667 => '𓀰', 13668 => '𓀱', 13669 => '𓀲', 13670 => '𓀳', 13671 => '𓀴', 13672 => '𓀵', 13673 => '𓀶', 13674 => '𓀷', 13675 => '𓀸', 13676 => '𓀹', 13677 => '𓀺', 13678 => '𓀻', 13679 => '𓀼', 13680 => '𓀽', 13681 => '𓀾', 13682 => '𓀿', 13683 => '𓁀', 13684 => '𓁁', 13685 => '𓁂', 13686 => '𓁃', 13687 => '𓁄', 13688 => '𓁅', 13689 => '𓁆', 13690 => '𓁇', 13691 => '𓁈', 13692 => '𓁉', 13693 => '𓁊', 13694 => '𓁋', 13695 => '𓁌', 13696 => '𓁍', 13697 => '𓁎', 13698 => '𓁏', 13699 => '𓁐', 13700 => '𓁑', 13701 => '𓁒', 13702 => '𓁓', 13703 => '𓁔', 13704 => '𓁕', 13705 => '𓁖', 13706 => '𓁗', 13707 => '𓁘', 13708 => '𓁙', 13709 => '𓁚', 13710 => '𓁛', 13711 => '𓁜', 13712 => '𓁝', 13713 => '𓁞', 13714 => '𓁟', 13715 => '𓁠', 13716 => '𓁡', 13717 => '𓁢', 13718 => '𓁣', 13719 => '𓁤', 13720 => '𓁥', 13721 => '𓁦', 13722 => '𓁧', 13723 => '𓁨', 13724 => '𓁩', 13725 => '𓁪', 13726 => '𓁫', 13727 => '𓁬', 13728 => '𓁭', 13729 => '𓁮', 13730 => '𓁯', 13731 => '𓁰', 13732 => '𓁱', 13733 => '𓁲', 13734 => '𓁳', 13735 => '𓁴', 13736 => '𓁵', 13737 => '𓁶', 13738 => '𓁷', 13739 => '𓁸', 13740 => '𓁹', 13741 => '𓁺', 13742 => '𓁻', 13743 => '𓁼', 13744 => '𓁽', 13745 => '𓁾', 13746 => '𓁿', 13747 => '𓂀', 13748 => '𓂁', 13749 => '𓂂', 13750 => '𓂃', 13751 => '𓂄', 13752 => '𓂅', 13753 => '𓂆', 13754 => '𓂇', 13755 => '𓂈', 13756 => '𓂉', 13757 => '𓂊', 13758 => '𓂋', 13759 => '𓂌', 13760 => '𓂍', 13761 => '𓂎', 13762 => '𓂏', 13763 => '𓂐', 13764 => '𓂑', 13765 => '𓂒', 13766 => '𓂓', 13767 => '𓂔', 13768 => '𓂕', 13769 => '𓂖', 13770 => '𓂗', 13771 => '𓂘', 13772 => '𓂙', 13773 => '𓂚', 13774 => '𓂛', 13775 => '𓂜', 13776 => '𓂝', 13777 => '𓂞', 13778 => '𓂟', 13779 => '𓂠', 13780 => '𓂡', 13781 => '𓂢', 13782 => '𓂣', 13783 => '𓂤', 13784 => '𓂥', 13785 => '𓂦', 13786 => '𓂧', 13787 => '𓂨', 13788 => '𓂩', 13789 => '𓂪', 13790 => '𓂫', 13791 => '𓂬', 13792 => '𓂭', 13793 => '𓂮', 13794 => '𓂯', 13795 => '𓂰', 13796 => '𓂱', 13797 => '𓂲', 13798 => '𓂳', 13799 => '𓂴', 13800 => '𓂵', 13801 => '𓂶', 13802 => '𓂷', 13803 => '𓂸', 13804 => '𓂹', 13805 => '𓂺', 13806 => '𓂻', 13807 => '𓂼', 13808 => '𓂽', 13809 => '𓂾', 13810 => '𓂿', 13811 => '𓃀', 13812 => '𓃁', 13813 => '𓃂', 13814 => '𓃃', 13815 => '𓃄', 13816 => '𓃅', 13817 => '𓃆', 13818 => '𓃇', 13819 => '𓃈', 13820 => '𓃉', 13821 => '𓃊', 13822 => '𓃋', 13823 => '𓃌', 13824 => '𓃍', 13825 => '𓃎', 13826 => '𓃏', 13827 => '𓃐', 13828 => '𓃑', 13829 => '𓃒', 13830 => '𓃓', 13831 => '𓃔', 13832 => '𓃕', 13833 => '𓃖', 13834 => '𓃗', 13835 => '𓃘', 13836 => '𓃙', 13837 => '𓃚', 13838 => '𓃛', 13839 => '𓃜', 13840 => '𓃝', 13841 => '𓃞', 13842 => '𓃟', 13843 => '𓃠', 13844 => '𓃡', 13845 => '𓃢', 13846 => '𓃣', 13847 => '𓃤', 13848 => '𓃥', 13849 => '𓃦', 13850 => '𓃧', 13851 => '𓃨', 13852 => '𓃩', 13853 => '𓃪', 13854 => '𓃫', 13855 => '𓃬', 13856 => '𓃭', 13857 => '𓃮', 13858 => '𓃯', 13859 => '𓃰', 13860 => '𓃱', 13861 => '𓃲', 13862 => '𓃳', 13863 => '𓃴', 13864 => '𓃵', 13865 => '𓃶', 13866 => '𓃷', 13867 => '𓃸', 13868 => '𓃹', 13869 => '𓃺', 13870 => '𓃻', 13871 => '𓃼', 13872 => '𓃽', 13873 => '𓃾', 13874 => '𓃿', 13875 => '𓄀', 13876 => '𓄁', 13877 => '𓄂', 13878 => '𓄃', 13879 => '𓄄', 13880 => '𓄅', 13881 => '𓄆', 13882 => '𓄇', 13883 => '𓄈', 13884 => '𓄉', 13885 => '𓄊', 13886 => '𓄋', 13887 => '𓄌', 13888 => '𓄍', 13889 => '𓄎', 13890 => '𓄏', 13891 => '𓄐', 13892 => '𓄑', 13893 => '𓄒', 13894 => '𓄓', 13895 => '𓄔', 13896 => '𓄕', 13897 => '𓄖', 13898 => '𓄗', 13899 => '𓄘', 13900 => '𓄙', 13901 => '𓄚', 13902 => '𓄛', 13903 => '𓄜', 13904 => '𓄝', 13905 => '𓄞', 13906 => '𓄟', 13907 => '𓄠', 13908 => '𓄡', 13909 => '𓄢', 13910 => '𓄣', 13911 => '𓄤', 13912 => '𓄥', 13913 => '𓄦', 13914 => '𓄧', 13915 => '𓄨', 13916 => '𓄩', 13917 => '𓄪', 13918 => '𓄫', 13919 => '𓄬', 13920 => '𓄭', 13921 => '𓄮', 13922 => '𓄯', 13923 => '𓄰', 13924 => '𓄱', 13925 => '𓄲', 13926 => '𓄳', 13927 => '𓄴', 13928 => '𓄵', 13929 => '𓄶', 13930 => '𓄷', 13931 => '𓄸', 13932 => '𓄹', 13933 => '𓄺', 13934 => '𓄻', 13935 => '𓄼', 13936 => '𓄽', 13937 => '𓄾', 13938 => '𓄿', 13939 => '𓅀', 13940 => '𓅁', 13941 => '𓅂', 13942 => '𓅃', 13943 => '𓅄', 13944 => '𓅅', 13945 => '𓅆', 13946 => '𓅇', 13947 => '𓅈', 13948 => '𓅉', 13949 => '𓅊', 13950 => '𓅋', 13951 => '𓅌', 13952 => '𓅍', 13953 => '𓅎', 13954 => '𓅏', 13955 => '𓅐', 13956 => '𓅑', 13957 => '𓅒', 13958 => '𓅓', 13959 => '𓅔', 13960 => '𓅕', 13961 => '𓅖', 13962 => '𓅗', 13963 => '𓅘', 13964 => '𓅙', 13965 => '𓅚', 13966 => '𓅛', 13967 => '𓅜', 13968 => '𓅝', 13969 => '𓅞', 13970 => '𓅟', 13971 => '𓅠', 13972 => '𓅡', 13973 => '𓅢', 13974 => '𓅣', 13975 => '𓅤', 13976 => '𓅥', 13977 => '𓅦', 13978 => '𓅧', 13979 => '𓅨', 13980 => '𓅩', 13981 => '𓅪', 13982 => '𓅫', 13983 => '𓅬', 13984 => '𓅭', 13985 => '𓅮', 13986 => '𓅯', 13987 => '𓅰', 13988 => '𓅱', 13989 => '𓅲', 13990 => '𓅳', 13991 => '𓅴', 13992 => '𓅵', 13993 => '𓅶', 13994 => '𓅷', 13995 => '𓅸', 13996 => '𓅹', 13997 => '𓅺', 13998 => '𓅻', 13999 => '𓅼', 14000 => '𓅽', 14001 => '𓅾', 14002 => '𓅿', 14003 => '𓆀', 14004 => '𓆁', 14005 => '𓆂', 14006 => '𓆃', 14007 => '𓆄', 14008 => '𓆅', 14009 => '𓆆', 14010 => '𓆇', 14011 => '𓆈', 14012 => '𓆉', 14013 => '𓆊', 14014 => '𓆋', 14015 => '𓆌', 14016 => '𓆍', 14017 => '𓆎', 14018 => '𓆏', 14019 => '𓆐', 14020 => '𓆑', 14021 => '𓆒', 14022 => '𓆓', 14023 => '𓆔', 14024 => '𓆕', 14025 => '𓆖', 14026 => '𓆗', 14027 => '𓆘', 14028 => '𓆙', 14029 => '𓆚', 14030 => '𓆛', 14031 => '𓆜', 14032 => '𓆝', 14033 => '𓆞', 14034 => '𓆟', 14035 => '𓆠', 14036 => '𓆡', 14037 => '𓆢', 14038 => '𓆣', 14039 => '𓆤', 14040 => '𓆥', 14041 => '𓆦', 14042 => '𓆧', 14043 => '𓆨', 14044 => '𓆩', 14045 => '𓆪', 14046 => '𓆫', 14047 => '𓆬', 14048 => '𓆭', 14049 => '𓆮', 14050 => '𓆯', 14051 => '𓆰', 14052 => '𓆱', 14053 => '𓆲', 14054 => '𓆳', 14055 => '𓆴', 14056 => '𓆵', 14057 => '𓆶', 14058 => '𓆷', 14059 => '𓆸', 14060 => '𓆹', 14061 => '𓆺', 14062 => '𓆻', 14063 => '𓆼', 14064 => '𓆽', 14065 => '𓆾', 14066 => '𓆿', 14067 => '𓇀', 14068 => '𓇁', 14069 => '𓇂', 14070 => '𓇃', 14071 => '𓇄', 14072 => '𓇅', 14073 => '𓇆', 14074 => '𓇇', 14075 => '𓇈', 14076 => '𓇉', 14077 => '𓇊', 14078 => '𓇋', 14079 => '𓇌', 14080 => '𓇍', 14081 => '𓇎', 14082 => '𓇏', 14083 => '𓇐', 14084 => '𓇑', 14085 => '𓇒', 14086 => '𓇓', 14087 => '𓇔', 14088 => '𓇕', 14089 => '𓇖', 14090 => '𓇗', 14091 => '𓇘', 14092 => '𓇙', 14093 => '𓇚', 14094 => '𓇛', 14095 => '𓇜', 14096 => '𓇝', 14097 => '𓇞', 14098 => '𓇟', 14099 => '𓇠', 14100 => '𓇡', 14101 => '𓇢', 14102 => '𓇣', 14103 => '𓇤', 14104 => '𓇥', 14105 => '𓇦', 14106 => '𓇧', 14107 => '𓇨', 14108 => '𓇩', 14109 => '𓇪', 14110 => '𓇫', 14111 => '𓇬', 14112 => '𓇭', 14113 => '𓇮', 14114 => '𓇯', 14115 => '𓇰', 14116 => '𓇱', 14117 => '𓇲', 14118 => '𓇳', 14119 => '𓇴', 14120 => '𓇵', 14121 => '𓇶', 14122 => '𓇷', 14123 => '𓇸', 14124 => '𓇹', 14125 => '𓇺', 14126 => '𓇻', 14127 => '𓇼', 14128 => '𓇽', 14129 => '𓇾', 14130 => '𓇿', 14131 => '𓈀', 14132 => '𓈁', 14133 => '𓈂', 14134 => '𓈃', 14135 => '𓈄', 14136 => '𓈅', 14137 => '𓈆', 14138 => '𓈇', 14139 => '𓈈', 14140 => '𓈉', 14141 => '𓈊', 14142 => '𓈋', 14143 => '𓈌', 14144 => '𓈍', 14145 => '𓈎', 14146 => '𓈏', 14147 => '𓈐', 14148 => '𓈑', 14149 => '𓈒', 14150 => '𓈓', 14151 => '𓈔', 14152 => '𓈕', 14153 => '𓈖', 14154 => '𓈗', 14155 => '𓈘', 14156 => '𓈙', 14157 => '𓈚', 14158 => '𓈛', 14159 => '𓈜', 14160 => '𓈝', 14161 => '𓈞', 14162 => '𓈟', 14163 => '𓈠', 14164 => '𓈡', 14165 => '𓈢', 14166 => '𓈣', 14167 => '𓈤', 14168 => '𓈥', 14169 => '𓈦', 14170 => '𓈧', 14171 => '𓈨', 14172 => '𓈩', 14173 => '𓈪', 14174 => '𓈫', 14175 => '𓈬', 14176 => '𓈭', 14177 => '𓈮', 14178 => '𓈯', 14179 => '𓈰', 14180 => '𓈱', 14181 => '𓈲', 14182 => '𓈳', 14183 => '𓈴', 14184 => '𓈵', 14185 => '𓈶', 14186 => '𓈷', 14187 => '𓈸', 14188 => '𓈹', 14189 => '𓈺', 14190 => '𓈻', 14191 => '𓈼', 14192 => '𓈽', 14193 => '𓈾', 14194 => '𓈿', 14195 => '𓉀', 14196 => '𓉁', 14197 => '𓉂', 14198 => '𓉃', 14199 => '𓉄', 14200 => '𓉅', 14201 => '𓉆', 14202 => '𓉇', 14203 => '𓉈', 14204 => '𓉉', 14205 => '𓉊', 14206 => '𓉋', 14207 => '𓉌', 14208 => '𓉍', 14209 => '𓉎', 14210 => '𓉏', 14211 => '𓉐', 14212 => '𓉑', 14213 => '𓉒', 14214 => '𓉓', 14215 => '𓉔', 14216 => '𓉕', 14217 => '𓉖', 14218 => '𓉗', 14219 => '𓉘', 14220 => '𓉙', 14221 => '𓉚', 14222 => '𓉛', 14223 => '𓉜', 14224 => '𓉝', 14225 => '𓉞', 14226 => '𓉟', 14227 => '𓉠', 14228 => '𓉡', 14229 => '𓉢', 14230 => '𓉣', 14231 => '𓉤', 14232 => '𓉥', 14233 => '𓉦', 14234 => '𓉧', 14235 => '𓉨', 14236 => '𓉩', 14237 => '𓉪', 14238 => '𓉫', 14239 => '𓉬', 14240 => '𓉭', 14241 => '𓉮', 14242 => '𓉯', 14243 => '𓉰', 14244 => '𓉱', 14245 => '𓉲', 14246 => '𓉳', 14247 => '𓉴', 14248 => '𓉵', 14249 => '𓉶', 14250 => '𓉷', 14251 => '𓉸', 14252 => '𓉹', 14253 => '𓉺', 14254 => '𓉻', 14255 => '𓉼', 14256 => '𓉽', 14257 => '𓉾', 14258 => '𓉿', 14259 => '𓊀', 14260 => '𓊁', 14261 => '𓊂', 14262 => '𓊃', 14263 => '𓊄', 14264 => '𓊅', 14265 => '𓊆', 14266 => '𓊇', 14267 => '𓊈', 14268 => '𓊉', 14269 => '𓊊', 14270 => '𓊋', 14271 => '𓊌', 14272 => '𓊍', 14273 => '𓊎', 14274 => '𓊏', 14275 => '𓊐', 14276 => '𓊑', 14277 => '𓊒', 14278 => '𓊓', 14279 => '𓊔', 14280 => '𓊕', 14281 => '𓊖', 14282 => '𓊗', 14283 => '𓊘', 14284 => '𓊙', 14285 => '𓊚', 14286 => '𓊛', 14287 => '𓊜', 14288 => '𓊝', 14289 => '𓊞', 14290 => '𓊟', 14291 => '𓊠', 14292 => '𓊡', 14293 => '𓊢', 14294 => '𓊣', 14295 => '𓊤', 14296 => '𓊥', 14297 => '𓊦', 14298 => '𓊧', 14299 => '𓊨', 14300 => '𓊩', 14301 => '𓊪', 14302 => '𓊫', 14303 => '𓊬', 14304 => '𓊭', 14305 => '𓊮', 14306 => '𓊯', 14307 => '𓊰', 14308 => '𓊱', 14309 => '𓊲', 14310 => '𓊳', 14311 => '𓊴', 14312 => '𓊵', 14313 => '𓊶', 14314 => '𓊷', 14315 => '𓊸', 14316 => '𓊹', 14317 => '𓊺', 14318 => '𓊻', 14319 => '𓊼', 14320 => '𓊽', 14321 => '𓊾', 14322 => '𓊿', 14323 => '𓋀', 14324 => '𓋁', 14325 => '𓋂', 14326 => '𓋃', 14327 => '𓋄', 14328 => '𓋅', 14329 => '𓋆', 14330 => '𓋇', 14331 => '𓋈', 14332 => '𓋉', 14333 => '𓋊', 14334 => '𓋋', 14335 => '𓋌', 14336 => '𓋍', 14337 => '𓋎', 14338 => '𓋏', 14339 => '𓋐', 14340 => '𓋑', 14341 => '𓋒', 14342 => '𓋓', 14343 => '𓋔', 14344 => '𓋕', 14345 => '𓋖', 14346 => '𓋗', 14347 => '𓋘', 14348 => '𓋙', 14349 => '𓋚', 14350 => '𓋛', 14351 => '𓋜', 14352 => '𓋝', 14353 => '𓋞', 14354 => '𓋟', 14355 => '𓋠', 14356 => '𓋡', 14357 => '𓋢', 14358 => '𓋣', 14359 => '𓋤', 14360 => '𓋥', 14361 => '𓋦', 14362 => '𓋧', 14363 => '𓋨', 14364 => '𓋩', 14365 => '𓋪', 14366 => '𓋫', 14367 => '𓋬', 14368 => '𓋭', 14369 => '𓋮', 14370 => '𓋯', 14371 => '𓋰', 14372 => '𓋱', 14373 => '𓋲', 14374 => '𓋳', 14375 => '𓋴', 14376 => '𓋵', 14377 => '𓋶', 14378 => '𓋷', 14379 => '𓋸', 14380 => '𓋹', 14381 => '𓋺', 14382 => '𓋻', 14383 => '𓋼', 14384 => '𓋽', 14385 => '𓋾', 14386 => '𓋿', 14387 => '𓌀', 14388 => '𓌁', 14389 => '𓌂', 14390 => '𓌃', 14391 => '𓌄', 14392 => '𓌅', 14393 => '𓌆', 14394 => '𓌇', 14395 => '𓌈', 14396 => '𓌉', 14397 => '𓌊', 14398 => '𓌋', 14399 => '𓌌', 14400 => '𓌍', 14401 => '𓌎', 14402 => '𓌏', 14403 => '𓌐', 14404 => '𓌑', 14405 => '𓌒', 14406 => '𓌓', 14407 => '𓌔', 14408 => '𓌕', 14409 => '𓌖', 14410 => '𓌗', 14411 => '𓌘', 14412 => '𓌙', 14413 => '𓌚', 14414 => '𓌛', 14415 => '𓌜', 14416 => '𓌝', 14417 => '𓌞', 14418 => '𓌟', 14419 => '𓌠', 14420 => '𓌡', 14421 => '𓌢', 14422 => '𓌣', 14423 => '𓌤', 14424 => '𓌥', 14425 => '𓌦', 14426 => '𓌧', 14427 => '𓌨', 14428 => '𓌩', 14429 => '𓌪', 14430 => '𓌫', 14431 => '𓌬', 14432 => '𓌭', 14433 => '𓌮', 14434 => '𓌯', 14435 => '𓌰', 14436 => '𓌱', 14437 => '𓌲', 14438 => '𓌳', 14439 => '𓌴', 14440 => '𓌵', 14441 => '𓌶', 14442 => '𓌷', 14443 => '𓌸', 14444 => '𓌹', 14445 => '𓌺', 14446 => '𓌻', 14447 => '𓌼', 14448 => '𓌽', 14449 => '𓌾', 14450 => '𓌿', 14451 => '𓍀', 14452 => '𓍁', 14453 => '𓍂', 14454 => '𓍃', 14455 => '𓍄', 14456 => '𓍅', 14457 => '𓍆', 14458 => '𓍇', 14459 => '𓍈', 14460 => '𓍉', 14461 => '𓍊', 14462 => '𓍋', 14463 => '𓍌', 14464 => '𓍍', 14465 => '𓍎', 14466 => '𓍏', 14467 => '𓍐', 14468 => '𓍑', 14469 => '𓍒', 14470 => '𓍓', 14471 => '𓍔', 14472 => '𓍕', 14473 => '𓍖', 14474 => '𓍗', 14475 => '𓍘', 14476 => '𓍙', 14477 => '𓍚', 14478 => '𓍛', 14479 => '𓍜', 14480 => '𓍝', 14481 => '𓍞', 14482 => '𓍟', 14483 => '𓍠', 14484 => '𓍡', 14485 => '𓍢', 14486 => '𓍣', 14487 => '𓍤', 14488 => '𓍥', 14489 => '𓍦', 14490 => '𓍧', 14491 => '𓍨', 14492 => '𓍩', 14493 => '𓍪', 14494 => '𓍫', 14495 => '𓍬', 14496 => '𓍭', 14497 => '𓍮', 14498 => '𓍯', 14499 => '𓍰', 14500 => '𓍱', 14501 => '𓍲', 14502 => '𓍳', 14503 => '𓍴', 14504 => '𓍵', 14505 => '𓍶', 14506 => '𓍷', 14507 => '𓍸', 14508 => '𓍹', 14509 => '𓍺', 14510 => '𓍻', 14511 => '𓍼', 14512 => '𓍽', 14513 => '𓍾', 14514 => '𓍿', 14515 => '𓎀', 14516 => '𓎁', 14517 => '𓎂', 14518 => '𓎃', 14519 => '𓎄', 14520 => '𓎅', 14521 => '𓎆', 14522 => '𓎇', 14523 => '𓎈', 14524 => '𓎉', 14525 => '𓎊', 14526 => '𓎋', 14527 => '𓎌', 14528 => '𓎍', 14529 => '𓎎', 14530 => '𓎏', 14531 => '𓎐', 14532 => '𓎑', 14533 => '𓎒', 14534 => '𓎓', 14535 => '𓎔', 14536 => '𓎕', 14537 => '𓎖', 14538 => '𓎗', 14539 => '𓎘', 14540 => '𓎙', 14541 => '𓎚', 14542 => '𓎛', 14543 => '𓎜', 14544 => '𓎝', 14545 => '𓎞', 14546 => '𓎟', 14547 => '𓎠', 14548 => '𓎡', 14549 => '𓎢', 14550 => '𓎣', 14551 => '𓎤', 14552 => '𓎥', 14553 => '𓎦', 14554 => '𓎧', 14555 => '𓎨', 14556 => '𓎩', 14557 => '𓎪', 14558 => '𓎫', 14559 => '𓎬', 14560 => '𓎭', 14561 => '𓎮', 14562 => '𓎯', 14563 => '𓎰', 14564 => '𓎱', 14565 => '𓎲', 14566 => '𓎳', 14567 => '𓎴', 14568 => '𓎵', 14569 => '𓎶', 14570 => '𓎷', 14571 => '𓎸', 14572 => '𓎹', 14573 => '𓎺', 14574 => '𓎻', 14575 => '𓎼', 14576 => '𓎽', 14577 => '𓎾', 14578 => '𓎿', 14579 => '𓏀', 14580 => '𓏁', 14581 => '𓏂', 14582 => '𓏃', 14583 => '𓏄', 14584 => '𓏅', 14585 => '𓏆', 14586 => '𓏇', 14587 => '𓏈', 14588 => '𓏉', 14589 => '𓏊', 14590 => '𓏋', 14591 => '𓏌', 14592 => '𓏍', 14593 => '𓏎', 14594 => '𓏏', 14595 => '𓏐', 14596 => '𓏑', 14597 => '𓏒', 14598 => '𓏓', 14599 => '𓏔', 14600 => '𓏕', 14601 => '𓏖', 14602 => '𓏗', 14603 => '𓏘', 14604 => '𓏙', 14605 => '𓏚', 14606 => '𓏛', 14607 => '𓏜', 14608 => '𓏝', 14609 => '𓏞', 14610 => '𓏟', 14611 => '𓏠', 14612 => '𓏡', 14613 => '𓏢', 14614 => '𓏣', 14615 => '𓏤', 14616 => '𓏥', 14617 => '𓏦', 14618 => '𓏧', 14619 => '𓏨', 14620 => '𓏩', 14621 => '𓏪', 14622 => '𓏫', 14623 => '𓏬', 14624 => '𓏭', 14625 => '𓏮', 14626 => '𓏯', 14627 => '𓏰', 14628 => '𓏱', 14629 => '𓏲', 14630 => '𓏳', 14631 => '𓏴', 14632 => '𓏵', 14633 => '𓏶', 14634 => '𓏷', 14635 => '𓏸', 14636 => '𓏹', 14637 => '𓏺', 14638 => '𓏻', 14639 => '𓏼', 14640 => '𓏽', 14641 => '𓏾', 14642 => '𓏿', 14643 => '𓐀', 14644 => '𓐁', 14645 => '𓐂', 14646 => '𓐃', 14647 => '𓐄', 14648 => '𓐅', 14649 => '𓐆', 14650 => '𓐇', 14651 => '𓐈', 14652 => '𓐉', 14653 => '𓐊', 14654 => '𓐋', 14655 => '𓐌', 14656 => '𓐍', 14657 => '𓐎', 14658 => '𓐏', 14659 => '𓐐', 14660 => '𓐑', 14661 => '𓐒', 14662 => '𓐓', 14663 => '𓐔', 14664 => '𓐕', 14665 => '𓐖', 14666 => '𓐗', 14667 => '𓐘', 14668 => '𓐙', 14669 => '𓐚', 14670 => '𓐛', 14671 => '𓐜', 14672 => '𓐝', 14673 => '𓐞', 14674 => '𓐟', 14675 => '𓐠', 14676 => '𓐡', 14677 => '𓐢', 14678 => '𓐣', 14679 => '𓐤', 14680 => '𓐥', 14681 => '𓐦', 14682 => '𓐧', 14683 => '𓐨', 14684 => '𓐩', 14685 => '𓐪', 14686 => '𓐫', 14687 => '𓐬', 14688 => '𓐭', 14689 => '𓐮', 14690 => '㆒', 14691 => '㆜', 14692 => '㆔', 14693 => '㆖', 14694 => '㆘', 14695 => '㆛', 14696 => '㆗', 14697 => '㆚', 14698 => '㆓', 14699 => '🈘', 14700 => '㆟', 14701 => '🈞', 14702 => '🈠', 14703 => '🈜', 14704 => '🈹', 14705 => '🈒', 14706 => '🉑', 14707 => '🈮', 14708 => '🈴', 14709 => '🈥', 14710 => '🈺', 14711 => '㆕', 14712 => '㆞', 14713 => '🈤', 14714 => '🈕', 14715 => '㆝', 14716 => '🈑', 14717 => '🈬', 14718 => '🈝', 14719 => '🉐', 14720 => '🈐', 14721 => '🈱', 14722 => '🈧', 14723 => '🈯', 14724 => '🈨', 14725 => '🈛', 14726 => '🈟', 14727 => '🈙', 14728 => '🈷', 14729 => '🈶', 14730 => '🈵', 14731 => '🈦', 14732 => '🈚', 14733 => '🈢', 14734 => '㆙', 14735 => '🈸', 14736 => '🈲', 14737 => '🈳', 14738 => '🈡', 14739 => '🈖', 14740 => '🈣', 14741 => '🈰', 14742 => '🈫',]
Interface for database access objects.
An AuthenticationProvider is used by AuthManager when authenticating users.
getUniqueId()
Return a unique identifier for this instance.
A pre-authentication provider can prevent authentication early on.
A primary authentication provider is responsible for associating the submitted authentication data wi...
const TYPE_LINK
Provider can link to existing accounts elsewhere.
A secondary provider mostly acts when the submitted authentication data has already been associated t...
Interface for configuration instances.
Definition Config.php:32
Interface for objects (potentially) representing an editable wiki page.
This interface represents the authority associated with the current execution context,...
Definition Authority.php:37
isNamed()
Is the user a normal non-temporary registered user?
authorizeWrite(string $action, PageIdentity $target, PermissionStatus $status=null)
Authorize write access.
getUser()
Returns the performer of the actions associated with this authority.
probablyCan(string $action, PageIdentity $target, PermissionStatus $status=null)
Checks whether this authority can probably perform the given action on the given target page.
Interface for objects representing user identity.
Shared interface for rigor levels when dealing with User methods.
This class is a delegate to ILBFactory for a given database cluster.
$source