Compare commits

...

186 Commits

Author SHA1 Message Date
Rémi REGNAULT fb42ad759b Add License
1 year ago
Nathan VERDIER 298b855851 :heavy_plus: add dependency
1 year ago
Nathan VERDIER 6ba2dcf881 ✚ Add: Framework DoushouQi
1 year ago
Nathan VERDIER 94c0f012d8 Add: AssetARkit
1 year ago
Nathan VERDIER 62ce99ebda Update: navigation
1 year ago
Nathan VERDIER a951fff464 🚧 Add: ARViews
1 year ago
Nathan VERDIER 30b9bdeeba 💄 Update: PlayersView
1 year ago
Nathan VERDIER ae9c6c3728 🔥 Move: AR assets in ARObjects
1 year ago
Rayhân HASSOU e8d7133896 Mise à jour de 'README.md'
1 year ago
Rayhân HASSOU 97e828d2e3 add images
1 year ago
Nathan VERDIER 57e3bd04cf 🔀 Merge: with dev_ARKit
1 year ago
Nathan VERDIER 950cfe3546 Merge branch 'dev_ARKit'
1 year ago
Nathan VERDIER 1b693e584c 🔀 merging to get NavigationStack
1 year ago
Rayhân HASSOU 5ade5fc25f fix bug
1 year ago
Nathan VERDIER 806840e84e 🚧 commit before merge
1 year ago
Rayhân HASSOU 4e691bfd5f now historic are sort by date
1 year ago
Rayhân HASSOU 2f8b6b92b9 fix button problem
1 year ago
Rayhân HASSOU d3884adda3 readd song
1 year ago
Rayhân HASSOU 2927a0d285 solve merge conflict
1 year ago
Rayhân HASSOU f5428fdb18 Merge branch 'dev_vm_saveHistorique'
1 year ago
Rayhân HASSOU 86c4c79767 timer is save now
1 year ago
Rémi REGNAULT 76cf1d9145 Go back on screen menu at the end of the game
1 year ago
Rayhân HASSOU a171478e2c historic is well saved
1 year ago
Rémi REGNAULT 36e5be8c4a Merge branch 'dev_vm' of https://codefirst.iut.uca.fr/git/remi.regnault/DouShouQi_App into dev_vm
1 year ago
Rémi REGNAULT 315d60bdf9 ⚰️ removing dead code
1 year ago
Rayhân HASSOU dcdc6113d1 moove sounds
1 year ago
Rayhân HASSOU cf25c7e139 add musics
1 year ago
Nathan VERDIER 631ae89c11 Merge branch 'dev_views_Game'
1 year ago
Nathan VERDIER d4362cdf91 Update: SelectPlayerView for create players
1 year ago
Nathan VERDIER 1e6db55be4 Add: EndGame view
1 year ago
Nathan VERDIER 239782ec60 Add: log for endgame
1 year ago
Nathan VERDIER 7a18273be9 Add: listener
1 year ago
Nathan VERDIER 205c4723e4 💄 Add: new colors
1 year ago
reregnault 73830f8ab2 🚧 resolving conflicts
1 year ago
Rayhân HASSOU 10ac1a8a25 score board is done
1 year ago
Rayhân HASSOU d5baa35e50 now we can see rank of player
1 year ago
reregnault 3e85b7d6d0 🚧 tp meeple back on invalid move
1 year ago
Rayhân HASSOU 780488deac change ui/ux select player
1 year ago
reregnault df25251a09 adding colours of maple for P2
1 year ago
Rayhân HASSOU 60711f4897 Merge branch 'dev_views_Game'
1 year ago
Nathan VERDIER aa4236091f 💄 Update: style for button selection joueur
1 year ago
Nathan VERDIER 3aa50d654b 💄 Update: style for button slection perso
1 year ago
reregnault 1eba7c0638 when you are playing a game, the name and last move change every turn
1 year ago
Nathan VERDIER 4a440238cf Add: Creation for AI
1 year ago
Nathan VERDIER e12c7b4143 🐛 Fix: popup selectPlayer
1 year ago
Rayhân HASSOU 81a6d20a10 Merge branch 'Ar_kit'
1 year ago
étudiant 82a2129b4c add some changes and add arkit project
1 year ago
Rémi REGNAULT e5b2109b23 now, no invalid move
1 year ago
Rémi REGNAULT 67b86d0085 Merge branch 'dev_views_Game' of https://codefirst.iut.uca.fr/git/remi.regnault/DouShouQi_App into dev_views_Game
1 year ago
Rémi REGNAULT 588e1c1830 🚧
1 year ago
étudiant 1fc38e8e28 merge
1 year ago
Nathan VERDIER 33f66bcc8a 🐛 Fix: call SelectPlayerButtonView with PlayerVm
1 year ago
étudiant 63650920d2 Merge branch 'dev_views_Game'
1 year ago
Rayhân HASSOU a95cb5a93a Merge pull request 'dev_vm_Players' (#15) from dev_vm_Players into dev_vm
1 year ago
étudiant 4d7ca429f8 fix somes bug
1 year ago
étudiant 3b7d4f410b delete function work
1 year ago
Nathan VERDIER a93d4e26b2 🚧 Add: comment
1 year ago
Nathan VERDIER d28d25f150 🐛 Update: Binding to observableObject
1 year ago
Nathan VERDIER 94b49e99cb 🚧 Add: comment
1 year ago
Nathan VERDIER 3a569bea57 🐛 Update: Binding to Published
1 year ago
Nathan VERDIER 86912bf1ff Update: Show button and affiche all player
1 year ago
Nathan VERDIER df0f29331e 🐛 Update: call ShowAllPlayer
1 year ago
Nathan VERDIER fb1a4e9466 Update: AddPlayerView
1 year ago
étudiant 6ea7146860 players display well when they have been added
1 year ago
Nathan VERDIER a492de1e8e Merge branch 'dev_vm_Players'
1 year ago
étudiant 4bb2045fe9 players save work
1 year ago
Nathan VERDIER 28841d2a83 Merge branch 'dev_vm_Players'
1 year ago
Nathan VERDIER cacf6d85d6 🚧 Update param function
1 year ago
Nathan VERDIER a790d1e26c 🚧 Update call fonction ShowAllPlayer
1 year ago
Nathan VERDIER 77ce09091a 🐛 Update: Call AddPlayerView
1 year ago
Nathan VERDIER 7eaa6049c2 Update: Depency
1 year ago
Nathan VERDIER b4a98873a8 🚧 Update: SelectPlayerButtonView for call ShowAllPlayer sheet
1 year ago
Nathan VERDIER 581d2a5a2d 🚧 Update: ShowAllPlayer for list all player
1 year ago
Nathan VERDIER 626f32c605 🚧 Update: SelectPlayerView for call ShowAllPlayer sheet
1 year ago
Nathan VERDIER 30b3d43e92 🚧 Update: SpriteMeeple move for add vm
1 year ago
Nathan VERDIER befb5e731d 🚧 Update: SpriteMeeple move for add vm
1 year ago
étudiant 1aa2c5318b players binding works
1 year ago
Rémi REGNAULT d771a3daaf 💄 Text color for player name now set to be the same as the color of the title
1 year ago
Rémi REGNAULT b8e08a1c36 💄 AddPlayerView now use a custom background colour
1 year ago
Rémi REGNAULT 5608b2e6a4 💄 remove the override background color
1 year ago
Rémi REGNAULT 333985ed36 💄 adding colors for the popup background when adding player
1 year ago
Rayhân HASSOU 6173e63ce7 Merge pull request '♻️ separate the enum language in another file' (#14) from dev_vm into dev_vm_Players
1 year ago
Rémi REGNAULT ec168e3155 Merge remote-tracking branch 'refs/remotes/origin/dev_views_Game'
1 year ago
Rémi REGNAULT 0456325767 Merge remote-tracking branch 'refs/remotes/origin/dev_views_stats'
1 year ago
Rémi REGNAULT ce222566f7 💄 changing title sag image
1 year ago
Rémi REGNAULT d774dfe491 💄
1 year ago
Rémi REGNAULT c2eb19e912 ♻️ separate the enum language in another file
1 year ago
Rémi REGNAULT 3a6632c289 🐛 fixing previous merge
1 year ago
Rayhân HASSOU a8e37fa1f6 correct a problem
1 year ago
Rémi REGNAULT 9696158863 🔀 merging views branch into viewmodel branch
1 year ago
Nathan VERDIER ff2f0be545 🔥 Remove: unused code
1 year ago
Nathan VERDIER 4e4b928431 Add: navigation for selectPlayer
1 year ago
Nathan VERDIER 0b9c8f1581 Add: navigation for selectPlayerView
1 year ago
Rémi REGNAULT 97a3af9dce Merge branch 'dev_views'
1 year ago
Rémi REGNAULT 16261de6e7 Merge remote-tracking branch 'refs/remotes/origin/dev_views_Game'
1 year ago
Rayhân HASSOU 049d2a0703 Merge pull request 'dev_views_stats' (#13) from dev_views_stats into dev_views
1 year ago
Rayhân HASSOU 91f4157c10 add assets 🍱
1 year ago
Nathan VERDIER d478658435 🔥 Remove: code useless
1 year ago
Nathan VERDIER 3c3be0b548 🔀 Merge: dev_views
1 year ago
Nathan VERDIER 89dd5450ba Merge branch 'dev_views'
1 year ago
Nathan VERDIER 12ebaee8a4 Add: Position for spawn meeples
1 year ago
Nathan VERDIER fa5fb12e8c Add: update height, width and zPosition on touche begin and touche ended
1 year ago
Rémi REGNAULT f3ed7c87aa 🔀 merging
1 year ago
Rayhân HASSOU 3c42f5c42a add stat for players
1 year ago
Nathan VERDIER 457b8ff3d7 Update: SpriteMeeple for width and height assets
1 year ago
Nathan VERDIER 7f804f6c62 Update: GameScene for width and height assets
1 year ago
Nathan VERDIER 3ca451a3c2 🍱 Update: AppImages for add new assets
1 year ago
Nathan VERDIER ca3deffd83 🍱 Add: Meeples assets
1 year ago
Rémi REGNAULT 12a36f10b0 Merge remote-tracking branch 'refs/remotes/origin/dev'
1 year ago
Rémi REGNAULT 7163a17723 🔀 merging
1 year ago
Rémi REGNAULT b8cbcc1826 Merge remote-tracking branch 'refs/remotes/origin/dev_views_SelectPlayer'
1 year ago
Rémi REGNAULT 425a7fbea6 Merge branch 'dev_views' of https://codefirst.iut.uca.fr/git/remi.regnault/DouShouQi_App into dev_views
1 year ago
Rémi REGNAULT 095c1a5305 🔀 merging
1 year ago
Rayhân HASSOU 002b3ec04a merge dev_views_players 🔀
1 year ago
Rémi REGNAULT 2e84bc3d23 Merge remote-tracking branch 'refs/remotes/origin/dev_views_MainPage'
1 year ago
Rémi REGNAULT 0eb0a5d128 Merge remote-tracking branch 'refs/remotes/origin/dev_views_Historic'
1 year ago
Rayhân HASSOU a8e9418b35 fix conflict 🔀
1 year ago
Nathan VERDIER d10ffdcf4a 📝 SpriteMeeple and GameScene
1 year ago
Rayhân HASSOU b2b0298a7b add animation
1 year ago
Nathan VERDIER bc6ead80e9 🔊 Add: Musique
1 year ago
Nathan VERDIER 4daa6239de Update: touchesEnded
1 year ago
Nathan VERDIER 19156a0be7 Add: initializeBoard
1 year ago
Nathan VERDIER 151847ddd7 🔧 Update: project
1 year ago
Rémi REGNAULT ef13be6e3a 🚧 SettingsView preview commented
1 year ago
Rémi REGNAULT c88641d833 🚧 using SettingsVM as an environment object
1 year ago
Rémi REGNAULT a174135ebd 🚧 added SettingsVM, rework some views and components to support the SettingsVM
1 year ago
Nathan VERDIER 267650f9dc 🔊 Add: GameSound
1 year ago
Nathan VERDIER c59e98d7ec Update: Meeple rotation
1 year ago
Nathan VERDIER 13a85bf3a8 Update: Meeple rotation
1 year ago
Nathan VERDIER 371ee648ae 🔧 Update: project
1 year ago
Nathan VERDIER 828f5d1184 Update : SpriteMeeple
1 year ago
Nathan VERDIER 606ba47912 Update : GameScene
1 year ago
Nathan VERDIER d5084083b8 🔊 Add: Sound on GameScene
1 year ago
Nathan VERDIER bbc2de1e78 🔧 Update: project
1 year ago
Nathan VERDIER c00184c8d2 🔀 Merge: dev_views
1 year ago
Rémi REGNAULT 3fb4770608 🚧 adding GameVM and HistoricVM to wrap DouShouQiModel properties
1 year ago
Rémi REGNAULT b5bcaa37af 🚧 making a group for ViewModels
1 year ago
Rémi REGNAULT 0a97b86a92 🔧 working on dependencies
1 year ago
Rémi REGNAULT 8739f6017e 🔀 merging
1 year ago
Nathan VERDIER ddafca849c Update: offset
1 year ago
Rémi REGNAULT 18803a7114 🐛 missing proj file in previous push
1 year ago
Nathan VERDIER 50ea3ef5b4 Add: board scaleMode
1 year ago
Nathan VERDIER da6ae0f249 Update: Board size
1 year ago
Nathan VERDIER 6e2c033ded 💄 Update: board.svg
1 year ago
Rayhân HASSOU b9dfd8f0bf Merge pull request 'dev_views_Players' (#10) from dev_views_Players into dev_views
1 year ago
Rayhân HASSOU 766b4683fc now we can add pictures fr player
1 year ago
Rémi REGNAULT 4bc2b427aa adding SystemIcons struct to contains name of system images
1 year ago
Nathan VERDIER 0fd434cc45 🔊 Add: Music on GameView
1 year ago
Rémi REGNAULT 63eeb921e3 CustomSwitchButton is now using system image name
1 year ago
Nathan VERDIER 1e26a42477 Add: GameScene
1 year ago
Nathan VERDIER 1193c758f7 Add: GameView
1 year ago
Nathan VERDIER 3d6b526caf Add: GameView
1 year ago
Nathan VERDIER 03f7437648 💄 Add: AppImages
1 year ago
Nathan VERDIER 6a2c071baa 💄 Add: Colors
1 year ago
Nathan VERDIER b5a5a66467 🔧
1 year ago
Rémi REGNAULT 039fa0550a 🚧 changing preview code in SettingsView
1 year ago
Rémi REGNAULT aabe88fbc8 🚧 removing preview on CustomSwitchButton (can not declare @state in preview)
1 year ago
Nathan VERDIER 2de681284d Add: gamesScene
1 year ago
étudiant 0b964c92cf add players pop up is done
1 year ago
étudiant f11218e90e change corner of button 💄
1 year ago
étudiant ad9c5078d2 change color of icons 💄
1 year ago
étudiant f5bfeaad29 a
1 year ago
Rayhân HASSOU 36a55cedda Merge pull request 'dev_views' (#9) from dev_views into dev_views_Players
1 year ago
Rémi REGNAULT 17983a43d4 🚧 working on settings page
1 year ago
Rémi REGNAULT d594941ded 💄 main button top and bottom right corner are round
1 year ago
Rémi REGNAULT 08d36596b1 Merge branch 'dev_views'
1 year ago
Rémi REGNAULT 955ac8135d ⚰️ removing a useless file
1 year ago
Rémi REGNAULT a6ac8ae804 🙈 removing /Dependencies folder from .gitignore
1 year ago
Rémi REGNAULT 847cfdd96f ⬆️ Upgrade dependency to DouShouQiModel
1 year ago
Rémi REGNAULT 6988a8f429 Merge branch 'dev_views_ViewTitle' into dev_views
1 year ago
Rémi REGNAULT 9b732a71c4 textStyle on SwiftUI.Text is now working
1 year ago
Rayhân HASSOU 897077d4c5 Merge pull request 'splash screen work ' (#8) from dev_views_SplashScreen into dev_views
1 year ago
étudiant c9f455bcfa splash screen work
1 year ago
Nathan VERDIER d1488a7dac 🚧 Add: SpriteMeeple
1 year ago
Nathan VERDIER 6aa80c9259 Add: SoundPlayerClass
1 year ago
Nathan VERDIER ebab036a30 🚧 Add: GameView
1 year ago
Nathan VERDIER 0052bef358 🚧 Add: TopGameBoard
1 year ago
Rayhân HASSOU da42d91aa8 Merge pull request 'master' (#3) from master into dev_views_Historic
1 year ago
Rayhân HASSOU c22e30969f Merge pull request 'readMe' (#2) from readMe into master
1 year ago
Rayhân HASSOU ce9b12bd9c Mise à jour de 'README.md'
1 year ago
Rémi REGNAULT a8194b5ace 🚧 adding PlayerResumeFrame
1 year ago
Rémi REGNAULT 6e6e519fc3 ♻️ rename PlayerResumeFrame into PlayerScoreResumeFrame
1 year ago
Rayhân HASSOU f95bc16d45 Mise à jour de 'README.md'
1 year ago
Rayhân HASSOU 59d688818d Mise à jour de 'README.md'
1 year ago
Rayhân HASSOU 7288513478 Mise à jour de 'README.md'
1 year ago
étudiant 8d5a41b672 add read me
1 year ago

4
.gitignore vendored

@ -29,7 +29,7 @@ DerivedData/
## App packaging
*.ipa
*.dSYM.zip
*.dSYM
## *.dSYM
## Playgrounds
timeline.xctimeline
@ -68,7 +68,7 @@ playground.xcworkspace
Carthage/Build/
# Accio dependency management
Dependencies/
#Dependencies/
.accio/
# fastlane

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 152 KiB

@ -1,7 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="107px" height="107px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#fffdfc" d="M -0.5,-0.5 C 35.1667,-0.5 70.8333,-0.5 106.5,-0.5C 106.5,35.1667 106.5,70.8333 106.5,106.5C 70.8333,106.5 35.1667,106.5 -0.5,106.5C -0.5,70.8333 -0.5,35.1667 -0.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#ff0a02" d="M 72.5,81.5 C 72.44,80.9569 72.1067,80.6236 71.5,80.5C 69.1074,81.9295 66.7741,83.2628 64.5,84.5C 62.7422,85.9985 60.9088,86.3319 59,85.5C 57.9563,86.6226 57.2896,87.9559 57,89.5C 55.5421,88.2532 54.0421,88.2532 52.5,89.5C 47.2625,88.1915 42.0958,86.5248 37,84.5C 36.6667,84.8333 36.3333,85.1667 36,85.5C 33.6166,82.7272 30.7833,80.5605 27.5,79C 26.8333,77.6667 26.1667,76.3333 25.5,75C 22.9664,74.4837 20.7998,73.317 19,71.5C 18.5803,65.9729 17.4137,60.6396 15.5,55.5C 16.5,54.1667 17.5,52.8333 18.5,51.5C 16.3145,47.9728 16.3145,44.3061 18.5,40.5C 23.5438,33.6008 28.8772,26.9341 34.5,20.5C 36.0924,20.4173 37.7591,20.7506 39.5,21.5C 43.4346,20.2463 47.4346,19.2463 51.5,18.5C 53.0879,17.9904 54.2545,16.9904 55,15.5C 62.8685,18.8827 70.3685,22.8827 77.5,27.5C 79.8375,25.9893 80.5042,26.3227 79.5,28.5C 80.1667,29.8333 81.1667,30.8333 82.5,31.5C 83.4656,33.396 83.7989,35.396 83.5,37.5C 86.6829,37.929 89.0162,39.5957 90.5,42.5C 89.1903,47.6537 89.1903,52.8204 90.5,58C 90.2838,60.5068 89.2838,61.3401 87.5,60.5C 86.2612,62.0072 86.5946,63.1739 88.5,64C 87.1068,65.1711 86.2735,66.6711 86,68.5C 85.6667,67.5 85.3333,66.5 85,65.5C 82.1612,70.4675 79.1612,75.8008 76,81.5C 75.0138,80.8288 73.8471,80.8288 72.5,81.5 Z"/></g>
<g><path style="opacity:1" fill="#ffaba5" d="M 72.5,81.5 C 70.2459,82.4151 68.2459,83.7484 66.5,85.5C 65.8165,85.1373 65.1499,84.8039 64.5,84.5C 66.7741,83.2628 69.1074,81.9295 71.5,80.5C 72.1067,80.6236 72.44,80.9569 72.5,81.5 Z"/></g>
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 107 107" width="107" height="107">
<title>title-background-svg</title>
<style>
.s0 { fill: #ff0a02 }
</style>
<g id="Layer">
<path id="Layer" fill-rule="evenodd" class="s0" d="m72.5 81.5q-0.1-0.8-1-1-3.6 2.1-7 4-2.6 2.2-5.5 1-1.6 1.7-2 4-2.2-1.9-4.5 0-7.9-2-15.5-5-0.5 0.5-1 1-3.6-4.2-8.5-6.5-1-2-2-4-3.8-0.8-6.5-3.5-0.6-8.3-3.5-16 1.5-2 3-4-3.3-5.3 0-11 7.6-10.3 16-20 2.4-0.1 5 1 5.9-1.9 12-3 2.4-0.8 3.5-3 11.8 5.1 22.5 12 3.5-2.3 2 1 1 2 3 3 1.4 2.8 1 6 4.8 0.6 7 5-2 7.7 0 15.5-0.3 3.8-3 2.5-1.9 2.3 1 3.5-2.1 1.8-2.5 4.5-0.5-1.5-1-3-4.3 7.5-9 16-1.5-1-3.5 0z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 656 B

@ -7,6 +7,8 @@
<dict>
<key>BinaryPath</key>
<string>DouShouQiModel.framework/DouShouQiModel</string>
<key>DebugSymbolsPath</key>
<string>dSYMs</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
@ -21,6 +23,8 @@
<dict>
<key>BinaryPath</key>
<string>DouShouQiModel.framework/DouShouQiModel</string>
<key>DebugSymbolsPath</key>
<string>dSYMs</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
@ -35,6 +39,23 @@
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>DouShouQiModel.framework/Versions/A/DouShouQiModel</string>
<key>DebugSymbolsPath</key>
<string>dSYMs</string>
<key>LibraryIdentifier</key>
<string>macos-arm64_x86_64</string>
<key>LibraryPath</key>
<string>DouShouQiModel.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>macos</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>

@ -24,7 +24,7 @@ public enum WinningReason {
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
@ -39,8 +39,13 @@ public enum BoardFailingReason {
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
@ -108,14 +113,24 @@ public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.Player {
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
@ -181,6 +196,10 @@ public enum Owner {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
@ -201,28 +220,38 @@ public enum Animal : Swift.Int {
get
}
}
public struct Game {
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public mutating func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public mutating func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) -> Swift.Void)
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public mutating func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public mutating func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public mutating func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public mutating func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public mutating func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public mutating func start() async throws
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}

@ -24,7 +24,7 @@ public enum WinningReason {
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
@ -39,8 +39,13 @@ public enum BoardFailingReason {
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
@ -108,14 +113,24 @@ public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.Player {
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
@ -181,6 +196,10 @@ public enum Owner {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
@ -201,28 +220,38 @@ public enum Animal : Swift.Int {
get
}
}
public struct Game {
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public mutating func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public mutating func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) -> Swift.Void)
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public mutating func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public mutating func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public mutating func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public mutating func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public mutating func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public mutating func start() async throws
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.fr.uca.iut.DouShouQiModel</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

@ -0,0 +1,504 @@
---
triple: 'arm64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x2E6D2, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x140B0, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x2E707, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x140E8, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x2E744, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x2E768, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x2E78B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4018, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x2E7AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4018, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x2E7BC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x4148, symSize: 0x68 }
- { offsetInCU: 0xDD, offset: 0x2E7FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x4004, symSize: 0x14 }
- { offsetInCU: 0x110, offset: 0x2E82D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x401C, symSize: 0x28 }
- { offsetInCU: 0x1A6, offset: 0x2E8C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x4044, symSize: 0x44 }
- { offsetInCU: 0x2A0, offset: 0x2E9BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x4088, symSize: 0x14 }
- { offsetInCU: 0x2C0, offset: 0x2E9DD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x4088, symSize: 0x14 }
- { offsetInCU: 0x300, offset: 0x2EA1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x409C, symSize: 0x44 }
- { offsetInCU: 0x3E3, offset: 0x2EB00, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x40E0, symSize: 0x28 }
- { offsetInCU: 0x46C, offset: 0x2EB89, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x41B0, symSize: 0x4 }
- { offsetInCU: 0x480, offset: 0x2EB9D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x1B4, symBinAddr: 0x41B4, symSize: 0x44 }
- { offsetInCU: 0x494, offset: 0x2EBB1, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1F8, symBinAddr: 0x41F8, symSize: 0xC }
- { offsetInCU: 0x4A8, offset: 0x2EBC5, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x204, symBinAddr: 0x4204, symSize: 0x4 }
- { offsetInCU: 0x4BC, offset: 0x2EBD9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x208, symBinAddr: 0x4208, symSize: 0xAC }
- { offsetInCU: 0x4D0, offset: 0x2EBED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x2B4, symBinAddr: 0x42B4, symSize: 0xC4 }
- { offsetInCU: 0x4E4, offset: 0x2EC01, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x378, symBinAddr: 0x4378, symSize: 0x14 }
- { offsetInCU: 0x4F8, offset: 0x2EC15, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x38C, symBinAddr: 0x438C, symSize: 0x4 }
- { offsetInCU: 0x50C, offset: 0x2EC29, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x390, symBinAddr: 0x4390, symSize: 0x24 }
- { offsetInCU: 0x520, offset: 0x2EC3D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3B4, symBinAddr: 0x43B4, symSize: 0x10 }
- { offsetInCU: 0x534, offset: 0x2EC51, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3C4, symBinAddr: 0x43C4, symSize: 0xC }
- { offsetInCU: 0x548, offset: 0x2EC65, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3D0, symBinAddr: 0x43D0, symSize: 0x90 }
- { offsetInCU: 0x55C, offset: 0x2EC79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x460, symBinAddr: 0x4460, symSize: 0xBC }
- { offsetInCU: 0x570, offset: 0x2EC8D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x51C, symBinAddr: 0x451C, symSize: 0x8 }
- { offsetInCU: 0x584, offset: 0x2ECA1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x524, symBinAddr: 0x4524, symSize: 0x4 }
- { offsetInCU: 0x598, offset: 0x2ECB5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x528, symBinAddr: 0x4528, symSize: 0x8 }
- { offsetInCU: 0x5AC, offset: 0x2ECC9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x530, symBinAddr: 0x4530, symSize: 0x10 }
- { offsetInCU: 0x626, offset: 0x2ED43, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x4108, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x2EE86, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4540, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x2EEAA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4540, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x2EECD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4558, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x2EEED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4558, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x2EEFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x4688, symSize: 0x7C }
- { offsetInCU: 0xF5, offset: 0x2EF54, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x4544, symSize: 0x14 }
- { offsetInCU: 0x128, offset: 0x2EF87, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x455C, symSize: 0x28 }
- { offsetInCU: 0x1BE, offset: 0x2F01D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x4584, symSize: 0x44 }
- { offsetInCU: 0x2B8, offset: 0x2F117, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x45C8, symSize: 0x14 }
- { offsetInCU: 0x2D8, offset: 0x2F137, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x45C8, symSize: 0x14 }
- { offsetInCU: 0x318, offset: 0x2F177, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x45DC, symSize: 0x44 }
- { offsetInCU: 0x3FB, offset: 0x2F25A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x4620, symSize: 0x28 }
- { offsetInCU: 0x484, offset: 0x2F2E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1C4, symBinAddr: 0x4704, symSize: 0x4 }
- { offsetInCU: 0x498, offset: 0x2F2F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1C8, symBinAddr: 0x4708, symSize: 0x44 }
- { offsetInCU: 0x4AC, offset: 0x2F30B, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x20C, symBinAddr: 0x474C, symSize: 0x14 }
- { offsetInCU: 0x4C0, offset: 0x2F31F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x224, symBinAddr: 0x4760, symSize: 0x74 }
- { offsetInCU: 0x4D4, offset: 0x2F333, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x298, symBinAddr: 0x47D4, symSize: 0x8C }
- { offsetInCU: 0x4E8, offset: 0x2F347, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x324, symBinAddr: 0x4860, symSize: 0x18 }
- { offsetInCU: 0x4FC, offset: 0x2F35B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x33C, symBinAddr: 0x4878, symSize: 0x4 }
- { offsetInCU: 0x510, offset: 0x2F36F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x340, symBinAddr: 0x487C, symSize: 0x18 }
- { offsetInCU: 0x524, offset: 0x2F383, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x358, symBinAddr: 0x4894, symSize: 0x10 }
- { offsetInCU: 0x538, offset: 0x2F397, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x374, symBinAddr: 0x48A4, symSize: 0x90 }
- { offsetInCU: 0x54C, offset: 0x2F3AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x404, symBinAddr: 0x4934, symSize: 0xBC }
- { offsetInCU: 0x560, offset: 0x2F3BF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x49F0, symSize: 0x8 }
- { offsetInCU: 0x574, offset: 0x2F3D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4C8, symBinAddr: 0x49F8, symSize: 0x4 }
- { offsetInCU: 0x588, offset: 0x2F3E7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4CC, symBinAddr: 0x49FC, symSize: 0x8 }
- { offsetInCU: 0x59C, offset: 0x2F3FB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4D4, symBinAddr: 0x4A04, symSize: 0x10 }
- { offsetInCU: 0x5FA, offset: 0x2F459, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x4648, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x2F588, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4A14, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x2F5FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4A14, symSize: 0xD0 }
- { offsetInCU: 0xEE, offset: 0x2F64F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x4AE4, symSize: 0xB0 }
- { offsetInCU: 0x189, offset: 0x2F6EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x4BA4, symSize: 0xA0 }
- { offsetInCU: 0x1DE, offset: 0x2F73F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x4C44, symSize: 0x70 }
- { offsetInCU: 0x22D, offset: 0x2F78E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x4CB4, symSize: 0xC }
- { offsetInCU: 0x2A9, offset: 0x2F80A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2AC, symBinAddr: 0x4CC0, symSize: 0x38 }
- { offsetInCU: 0x310, offset: 0x2F871, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x2E4, symBinAddr: 0x4CF8, symSize: 0x2C }
- { offsetInCU: 0x384, offset: 0x2F8E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x310, symBinAddr: 0x4D24, symSize: 0x108 }
- { offsetInCU: 0x507, offset: 0x2FA68, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x418, symBinAddr: 0x4E2C, symSize: 0x70 }
- { offsetInCU: 0x5BF, offset: 0x2FB20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x488, symBinAddr: 0x4E9C, symSize: 0x100 }
- { offsetInCU: 0x6AE, offset: 0x2FC0F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x588, symBinAddr: 0x4F9C, symSize: 0x40 }
- { offsetInCU: 0x70C, offset: 0x2FC6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x5D0, symBinAddr: 0x4FE4, symSize: 0x2C }
- { offsetInCU: 0x75D, offset: 0x2FCBE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x5FC, symBinAddr: 0x5010, symSize: 0x34 }
- { offsetInCU: 0x87E, offset: 0x2FDDF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x180, symBinAddr: 0x4B94, symSize: 0x10 }
- { offsetInCU: 0x92C, offset: 0x2FE8D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x5C8, symBinAddr: 0x4FDC, symSize: 0x8 }
- { offsetInCU: 0x959, offset: 0x2FEBA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x630, symBinAddr: 0x5044, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x30059, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x299B0, symBinAddr: 0x1DB40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x30073, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x6D30, symBinAddr: 0x1C720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x300E1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D38, symBinAddr: 0x1C728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x300FB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x6D40, symBinAddr: 0x1C730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x30115, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D48, symBinAddr: 0x1C738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x3012F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x299B8, symBinAddr: 0x1DB48, symSize: 0x0 }
- { offsetInCU: 0x284, offset: 0x3028E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x5130, symSize: 0x2DC }
- { offsetInCU: 0xA99, offset: 0x30AA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2DC, symBinAddr: 0x540C, symSize: 0x78 }
- { offsetInCU: 0xAD7, offset: 0x30AE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x354, symBinAddr: 0x5484, symSize: 0x14 }
- { offsetInCU: 0xB01, offset: 0x30B0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x3AC, symBinAddr: 0x54DC, symSize: 0x30 }
- { offsetInCU: 0xB41, offset: 0x30B4B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3DC, symBinAddr: 0x550C, symSize: 0x78 }
- { offsetInCU: 0xB93, offset: 0x30B9D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x6A8, symBinAddr: 0x57D8, symSize: 0x30 }
- { offsetInCU: 0xBD8, offset: 0x30BE2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x6D8, symBinAddr: 0x5808, symSize: 0x54 }
- { offsetInCU: 0xC3D, offset: 0x30C47, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x72C, symBinAddr: 0x585C, symSize: 0x458 }
- { offsetInCU: 0x15D4, offset: 0x315DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB84, symBinAddr: 0x5CB4, symSize: 0x62C }
- { offsetInCU: 0x1FE8, offset: 0x31FF2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x11B0, symBinAddr: 0x62E0, symSize: 0x5F8 }
- { offsetInCU: 0x295A, offset: 0x32964, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x17A8, symBinAddr: 0x68D8, symSize: 0x6C4 }
- { offsetInCU: 0x340F, offset: 0x33419, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1E6C, symBinAddr: 0x6F9C, symSize: 0x44C }
- { offsetInCU: 0x3A6C, offset: 0x33A76, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x22B8, symBinAddr: 0x73E8, symSize: 0x300 }
- { offsetInCU: 0x3FE8, offset: 0x33FF2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x25B8, symBinAddr: 0x76E8, symSize: 0x56C }
- { offsetInCU: 0x491C, offset: 0x34926, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B24, symBinAddr: 0x7C54, symSize: 0x12C }
- { offsetInCU: 0x4AEC, offset: 0x34AF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2C50, symBinAddr: 0x7D80, symSize: 0x140 }
- { offsetInCU: 0x4D56, offset: 0x34D60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x2D90, symBinAddr: 0x7EC0, symSize: 0xA0 }
- { offsetInCU: 0x4E40, offset: 0x34E4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x2E30, symBinAddr: 0x7F60, symSize: 0x104 }
- { offsetInCU: 0x50CF, offset: 0x350D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x2F34, symBinAddr: 0x8064, symSize: 0x3C }
- { offsetInCU: 0x51E0, offset: 0x351EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x2F70, symBinAddr: 0x80A0, symSize: 0x188 }
- { offsetInCU: 0x537E, offset: 0x35388, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x30F8, symBinAddr: 0x8228, symSize: 0x424 }
- { offsetInCU: 0x5879, offset: 0x35883, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x351C, symBinAddr: 0x864C, symSize: 0x8 }
- { offsetInCU: 0x588D, offset: 0x35897, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3524, symBinAddr: 0x8654, symSize: 0x8 }
- { offsetInCU: 0x58BF, offset: 0x358C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x352C, symBinAddr: 0x865C, symSize: 0x78 }
- { offsetInCU: 0x590C, offset: 0x35916, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x35A4, symBinAddr: 0x86D4, symSize: 0x14 }
- { offsetInCU: 0x5944, offset: 0x3594E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x35B8, symBinAddr: 0x86E8, symSize: 0x4 }
- { offsetInCU: 0x5960, offset: 0x3596A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x35BC, symBinAddr: 0x86EC, symSize: 0x14 }
- { offsetInCU: 0x597C, offset: 0x35986, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x35D0, symBinAddr: 0x8700, symSize: 0x14 }
- { offsetInCU: 0x5998, offset: 0x359A2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x35E4, symBinAddr: 0x8714, symSize: 0x4 }
- { offsetInCU: 0x59B4, offset: 0x359BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x35E8, symBinAddr: 0x8718, symSize: 0x4 }
- { offsetInCU: 0x59D0, offset: 0x359DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x35EC, symBinAddr: 0x871C, symSize: 0x4 }
- { offsetInCU: 0x59EC, offset: 0x359F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x35F0, symBinAddr: 0x8720, symSize: 0x14 }
- { offsetInCU: 0x5A21, offset: 0x35A2B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x8734, symSize: 0x8 }
- { offsetInCU: 0x5A41, offset: 0x35A4B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x8734, symSize: 0x8 }
- { offsetInCU: 0x5A66, offset: 0x35A70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x873C, symSize: 0x8 }
- { offsetInCU: 0x5A86, offset: 0x35A90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x873C, symSize: 0x8 }
- { offsetInCU: 0x5A99, offset: 0x35AA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5710, symBinAddr: 0xA840, symSize: 0x28C }
- { offsetInCU: 0x5E0F, offset: 0x35E19, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x599C, symBinAddr: 0xAACC, symSize: 0x3A8 }
- { offsetInCU: 0x629F, offset: 0x362A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5D44, symBinAddr: 0xAE74, symSize: 0x15C }
- { offsetInCU: 0x6492, offset: 0x3649C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5EA0, symBinAddr: 0xAFD0, symSize: 0x178 }
- { offsetInCU: 0x6572, offset: 0x3657C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6018, symBinAddr: 0xB148, symSize: 0xDC }
- { offsetInCU: 0x6689, offset: 0x36693, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x368, symBinAddr: 0x5498, symSize: 0x14 }
- { offsetInCU: 0x66A3, offset: 0x366AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x37C, symBinAddr: 0x54AC, symSize: 0x30 }
- { offsetInCU: 0x66D9, offset: 0x366E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x454, symBinAddr: 0x5584, symSize: 0x30 }
- { offsetInCU: 0x66F3, offset: 0x366FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x510, symBinAddr: 0x5640, symSize: 0x14 }
- { offsetInCU: 0x670D, offset: 0x36717, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x524, symBinAddr: 0x5654, symSize: 0x24 }
- { offsetInCU: 0x6C29, offset: 0x36C33, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3614, symBinAddr: 0x8744, symSize: 0xB0 }
- { offsetInCU: 0x6C9E, offset: 0x36CA8, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x36C4, symBinAddr: 0x87F4, symSize: 0x70 }
- { offsetInCU: 0x6CCB, offset: 0x36CD5, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3734, symBinAddr: 0x8864, symSize: 0x3C }
- { offsetInCU: 0x6D0E, offset: 0x36D18, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3770, symBinAddr: 0x88A0, symSize: 0x64 }
- { offsetInCU: 0x6D86, offset: 0x36D90, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x37D4, symBinAddr: 0x8904, symSize: 0xE0 }
- { offsetInCU: 0x6EBE, offset: 0x36EC8, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x38B4, symBinAddr: 0x89E4, symSize: 0x20 }
- { offsetInCU: 0x6EE1, offset: 0x36EEB, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x38D4, symBinAddr: 0x8A04, symSize: 0x10 }
- { offsetInCU: 0x6F24, offset: 0x36F2E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x38E4, symBinAddr: 0x8A14, symSize: 0xC8 }
- { offsetInCU: 0x6F8C, offset: 0x36F96, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x39AC, symBinAddr: 0x8ADC, symSize: 0xE0 }
- { offsetInCU: 0x6FE2, offset: 0x36FEC, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3A8C, symBinAddr: 0x8BBC, symSize: 0x78 }
- { offsetInCU: 0x704F, offset: 0x37059, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3B6C, symBinAddr: 0x8C9C, symSize: 0x1C0 }
- { offsetInCU: 0x7179, offset: 0x37183, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3D2C, symBinAddr: 0x8E5C, symSize: 0x54 }
- { offsetInCU: 0x724A, offset: 0x37254, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3D80, symBinAddr: 0x8EB0, symSize: 0x260 }
- { offsetInCU: 0x740A, offset: 0x37414, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4080, symBinAddr: 0x91B0, symSize: 0x1B0 }
- { offsetInCU: 0x748B, offset: 0x37495, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4230, symBinAddr: 0x9360, symSize: 0x1C8 }
- { offsetInCU: 0x7525, offset: 0x3752F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x43F8, symBinAddr: 0x9528, symSize: 0x358 }
- { offsetInCU: 0x76A4, offset: 0x376AE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4750, symBinAddr: 0x9880, symSize: 0x344 }
- { offsetInCU: 0x77B7, offset: 0x377C1, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4A94, symBinAddr: 0x9BC4, symSize: 0x154 }
- { offsetInCU: 0x79C2, offset: 0x379CC, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4BE8, symBinAddr: 0x9D18, symSize: 0x180 }
- { offsetInCU: 0x7BD8, offset: 0x37BE2, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4D68, symBinAddr: 0x9E98, symSize: 0x190 }
- { offsetInCU: 0x7C3C, offset: 0x37C46, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4EF8, symBinAddr: 0xA028, symSize: 0x298 }
- { offsetInCU: 0x7E42, offset: 0x37E4C, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5190, symBinAddr: 0xA2C0, symSize: 0x33C }
- { offsetInCU: 0x8072, offset: 0x3807C, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x54CC, symBinAddr: 0xA5FC, symSize: 0x1C }
- { offsetInCU: 0x808A, offset: 0x38094, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x54E8, symBinAddr: 0xA618, symSize: 0x1C }
- { offsetInCU: 0x80D9, offset: 0x380E3, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5504, symBinAddr: 0xA634, symSize: 0x110 }
- { offsetInCU: 0x8231, offset: 0x3823B, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5614, symBinAddr: 0xA744, symSize: 0xFC }
- { offsetInCU: 0x84A2, offset: 0x384AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x62EC, symBinAddr: 0xB41C, symSize: 0x44 }
- { offsetInCU: 0x84B6, offset: 0x384C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6330, symBinAddr: 0xB460, symSize: 0x44 }
- { offsetInCU: 0x84CA, offset: 0x384D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6374, symBinAddr: 0xB4A4, symSize: 0x34 }
- { offsetInCU: 0x84DE, offset: 0x384E8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x63A8, symBinAddr: 0xB4D8, symSize: 0x28 }
- { offsetInCU: 0x84F2, offset: 0x384FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x63D0, symBinAddr: 0xB500, symSize: 0x34 }
- { offsetInCU: 0x8506, offset: 0x38510, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6404, symBinAddr: 0xB534, symSize: 0x5C }
- { offsetInCU: 0x851A, offset: 0x38524, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6460, symBinAddr: 0xB590, symSize: 0xC }
- { offsetInCU: 0x852E, offset: 0x38538, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x646C, symBinAddr: 0xB59C, symSize: 0x44 }
- { offsetInCU: 0x8542, offset: 0x3854C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x64B0, symBinAddr: 0xB5E0, symSize: 0x48 }
- { offsetInCU: 0x8556, offset: 0x38560, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x64F8, symBinAddr: 0xB628, symSize: 0x3C }
- { offsetInCU: 0x856A, offset: 0x38574, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6534, symBinAddr: 0xB664, symSize: 0x10 }
- { offsetInCU: 0x857E, offset: 0x38588, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6544, symBinAddr: 0xB674, symSize: 0x40 }
- { offsetInCU: 0x8642, offset: 0x3864C, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6684, symBinAddr: 0xB7B4, symSize: 0x178 }
- { offsetInCU: 0x8713, offset: 0x3871D, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x67FC, symBinAddr: 0xB92C, symSize: 0xC0 }
- { offsetInCU: 0x8922, offset: 0x3892C, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x548, symBinAddr: 0x5678, symSize: 0x4C }
- { offsetInCU: 0x893E, offset: 0x38948, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x594, symBinAddr: 0x56C4, symSize: 0x30 }
- { offsetInCU: 0x89E8, offset: 0x389F2, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5C4, symBinAddr: 0x56F4, symSize: 0xE4 }
- { offsetInCU: 0x8F60, offset: 0x38F6A, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x60F4, symBinAddr: 0xB224, symSize: 0x100 }
- { offsetInCU: 0x9091, offset: 0x3909B, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x61F4, symBinAddr: 0xB324, symSize: 0xF8 }
- { offsetInCU: 0x91DE, offset: 0x391E8, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6584, symBinAddr: 0xB6B4, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x39527, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBE08, symSize: 0x1C }
- { offsetInCU: 0x4B, offset: 0x3954B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBE08, symSize: 0x1C }
- { offsetInCU: 0x9A, offset: 0x3959A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x1C, symBinAddr: 0xBE24, symSize: 0xF0 }
- { offsetInCU: 0x1DF, offset: 0x396DF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x10C, symBinAddr: 0xBF14, symSize: 0xC }
- { offsetInCU: 0x1FD, offset: 0x396FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x118, symBinAddr: 0xBF20, symSize: 0xC }
- { offsetInCU: 0x21B, offset: 0x3971B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x124, symBinAddr: 0xBF2C, symSize: 0xC }
- { offsetInCU: 0x239, offset: 0x39739, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x130, symBinAddr: 0xBF38, symSize: 0xC }
- { offsetInCU: 0x277, offset: 0x39777, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x13C, symBinAddr: 0xBF44, symSize: 0x10 }
- { offsetInCU: 0x2A5, offset: 0x397A5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x14C, symBinAddr: 0xBF54, symSize: 0x4 }
- { offsetInCU: 0x2D0, offset: 0x397D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x150, symBinAddr: 0xBF58, symSize: 0x4 }
- { offsetInCU: 0x2E4, offset: 0x397E4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0xBF5C, symSize: 0x4 }
- { offsetInCU: 0x30F, offset: 0x3980F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0xBF60, symSize: 0x4 }
- { offsetInCU: 0x32F, offset: 0x3982F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0xBF60, symSize: 0x4 }
- { offsetInCU: 0x340, offset: 0x39840, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x15C, symBinAddr: 0xBF64, symSize: 0x58 }
- { offsetInCU: 0x3B4, offset: 0x398B4, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x1B4, symBinAddr: 0xBFBC, symSize: 0xC }
- { offsetInCU: 0x3C8, offset: 0x398C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x1C4, symBinAddr: 0xBFC8, symSize: 0x44 }
- { offsetInCU: 0x3DC, offset: 0x398DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x208, symBinAddr: 0xC00C, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x398F0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x248, symBinAddr: 0xC04C, symSize: 0x10 }
- { offsetInCU: 0x2B, offset: 0x399FB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC05C, symSize: 0x1A4 }
- { offsetInCU: 0x4F, offset: 0x39A1F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xB338, symBinAddr: 0x1DB50, symSize: 0x0 }
- { offsetInCU: 0x1A2, offset: 0x39B72, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC05C, symSize: 0x1A4 }
- { offsetInCU: 0x582, offset: 0x39F52, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x1A4, symBinAddr: 0xC200, symSize: 0x78 }
- { offsetInCU: 0x5C0, offset: 0x39F90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x21C, symBinAddr: 0xC278, symSize: 0x14 }
- { offsetInCU: 0x5DB, offset: 0x39FAB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x230, symBinAddr: 0xC28C, symSize: 0x30 }
- { offsetInCU: 0x61F, offset: 0x39FEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x260, symBinAddr: 0xC2BC, symSize: 0x54 }
- { offsetInCU: 0x683, offset: 0x3A053, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B4, symBinAddr: 0xC310, symSize: 0x17C }
- { offsetInCU: 0x99E, offset: 0x3A36E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x430, symBinAddr: 0xC48C, symSize: 0x29C }
- { offsetInCU: 0xCE8, offset: 0x3A6B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6CC, symBinAddr: 0xC728, symSize: 0xA0 }
- { offsetInCU: 0xDF9, offset: 0x3A7C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x76C, symBinAddr: 0xC7C8, symSize: 0x10C }
- { offsetInCU: 0x1033, offset: 0x3AA03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x878, symBinAddr: 0xC8D4, symSize: 0x3C }
- { offsetInCU: 0x1143, offset: 0x3AB13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x8B4, symBinAddr: 0xC910, symSize: 0x11C }
- { offsetInCU: 0x12BB, offset: 0x3AC8B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x9D0, symBinAddr: 0xCA2C, symSize: 0x1E4 }
- { offsetInCU: 0x1477, offset: 0x3AE47, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBB4, symBinAddr: 0xCC10, symSize: 0x8 }
- { offsetInCU: 0x148B, offset: 0x3AE5B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBBC, symBinAddr: 0xCC18, symSize: 0x8 }
- { offsetInCU: 0x14BD, offset: 0x3AE8D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBC4, symBinAddr: 0xCC20, symSize: 0x78 }
- { offsetInCU: 0x150A, offset: 0x3AEDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC3C, symBinAddr: 0xCC98, symSize: 0x14 }
- { offsetInCU: 0x1542, offset: 0x3AF12, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC50, symBinAddr: 0xCCAC, symSize: 0x4 }
- { offsetInCU: 0x155E, offset: 0x3AF2E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC54, symBinAddr: 0xCCB0, symSize: 0x14 }
- { offsetInCU: 0x157A, offset: 0x3AF4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC68, symBinAddr: 0xCCC4, symSize: 0x14 }
- { offsetInCU: 0x1596, offset: 0x3AF66, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xC7C, symBinAddr: 0xCCD8, symSize: 0x4 }
- { offsetInCU: 0x15B2, offset: 0x3AF82, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xC80, symBinAddr: 0xCCDC, symSize: 0x4 }
- { offsetInCU: 0x15CE, offset: 0x3AF9E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xC84, symBinAddr: 0xCCE0, symSize: 0x18 }
- { offsetInCU: 0x15EA, offset: 0x3AFBA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xC9C, symBinAddr: 0xCCF8, symSize: 0x14 }
- { offsetInCU: 0x161E, offset: 0x3AFEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0xCD0C, symSize: 0x8 }
- { offsetInCU: 0x163E, offset: 0x3B00E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0xCD0C, symSize: 0x8 }
- { offsetInCU: 0x1661, offset: 0x3B031, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0xCD14, symSize: 0x8 }
- { offsetInCU: 0x1681, offset: 0x3B051, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0xCD14, symSize: 0x8 }
- { offsetInCU: 0x1693, offset: 0x3B063, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xCC0, symBinAddr: 0xCD1C, symSize: 0x144 }
- { offsetInCU: 0x1895, offset: 0x3B265, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE04, symBinAddr: 0xCE60, symSize: 0x220 }
- { offsetInCU: 0x1BFD, offset: 0x3B5CD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1024, symBinAddr: 0xD080, symSize: 0xB8 }
- { offsetInCU: 0x1E82, offset: 0x3B852, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11A4, symBinAddr: 0xD138, symSize: 0x34 }
- { offsetInCU: 0x1E96, offset: 0x3B866, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11D8, symBinAddr: 0xD16C, symSize: 0x28 }
- { offsetInCU: 0x1EAA, offset: 0x3B87A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1200, symBinAddr: 0xD194, symSize: 0x34 }
- { offsetInCU: 0x1EBE, offset: 0x3B88E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1234, symBinAddr: 0xD1C8, symSize: 0x5C }
- { offsetInCU: 0x1ED2, offset: 0x3B8A2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x129C, symBinAddr: 0xD224, symSize: 0x44 }
- { offsetInCU: 0x1EE6, offset: 0x3B8B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12E0, symBinAddr: 0xD268, symSize: 0x48 }
- { offsetInCU: 0x1EFA, offset: 0x3B8CA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1328, symBinAddr: 0xD2B0, symSize: 0x3C }
- { offsetInCU: 0x1F0E, offset: 0x3B8DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1364, symBinAddr: 0xD2EC, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x3BC66, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD374, symSize: 0x68 }
- { offsetInCU: 0x7A, offset: 0x3BC95, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x88, symBinAddr: 0xD3FC, symSize: 0x24 }
- { offsetInCU: 0x97, offset: 0x3BCB2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xAC, symBinAddr: 0xD420, symSize: 0xE4 }
- { offsetInCU: 0x1C2, offset: 0x3BDDD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x190, symBinAddr: 0xD504, symSize: 0x28 }
- { offsetInCU: 0x252, offset: 0x3BE6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1B8, symBinAddr: 0xD52C, symSize: 0x10C }
- { offsetInCU: 0x3DB, offset: 0x3BFF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2C4, symBinAddr: 0xD638, symSize: 0x70 }
- { offsetInCU: 0x49A, offset: 0x3C0B5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x334, symBinAddr: 0xD6A8, symSize: 0xFC }
- { offsetInCU: 0x58F, offset: 0x3C1AA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x430, symBinAddr: 0xD7A4, symSize: 0x40 }
- { offsetInCU: 0x601, offset: 0x3C21C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x470, symBinAddr: 0xD7E4, symSize: 0x2C }
- { offsetInCU: 0x630, offset: 0x3C24B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x49C, symBinAddr: 0xD810, symSize: 0xC }
- { offsetInCU: 0x693, offset: 0x3C2AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x4A8, symBinAddr: 0xD81C, symSize: 0x98 }
- { offsetInCU: 0x6C8, offset: 0x3C2E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x540, symBinAddr: 0xD8B4, symSize: 0xC }
- { offsetInCU: 0x738, offset: 0x3C353, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x6F4, symBinAddr: 0xDA68, symSize: 0x2C }
- { offsetInCU: 0x77C, offset: 0x3C397, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x68, symBinAddr: 0xD3DC, symSize: 0x20 }
- { offsetInCU: 0x883, offset: 0x3C49E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x54C, symBinAddr: 0xD8C0, symSize: 0x6C }
- { offsetInCU: 0x8B6, offset: 0x3C4D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x5B8, symBinAddr: 0xD92C, symSize: 0x48 }
- { offsetInCU: 0x904, offset: 0x3C51F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x624, symBinAddr: 0xD998, symSize: 0x88 }
- { offsetInCU: 0x934, offset: 0x3C54F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x6AC, symBinAddr: 0xDA20, symSize: 0x48 }
- { offsetInCU: 0x9FE, offset: 0x3C619, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x82C, symBinAddr: 0xDBA0, symSize: 0xFC }
- { offsetInCU: 0xBA1, offset: 0x3C7BC, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x968, symBinAddr: 0xDC9C, symSize: 0x110 }
- { offsetInCU: 0xD44, offset: 0x3C95F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xA78, symBinAddr: 0xDDAC, symSize: 0xFC }
- { offsetInCU: 0xEF2, offset: 0x3CB0D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xB74, symBinAddr: 0xDEA8, symSize: 0x128 }
- { offsetInCU: 0x27, offset: 0x3CE30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE150, symSize: 0x4 }
- { offsetInCU: 0x3F, offset: 0x3CE48, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x10, symBinAddr: 0xE160, symSize: 0x48 }
- { offsetInCU: 0x53, offset: 0x3CE5C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0x58, symBinAddr: 0xE1A8, symSize: 0x18 }
- { offsetInCU: 0x67, offset: 0x3CE70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0x70, symBinAddr: 0xE1C0, symSize: 0x48 }
- { offsetInCU: 0x7B, offset: 0x3CE84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0xB8, symBinAddr: 0xE208, symSize: 0xA0 }
- { offsetInCU: 0x8F, offset: 0x3CE98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x164, symBinAddr: 0xE2A8, symSize: 0x60 }
- { offsetInCU: 0xA3, offset: 0x3CEAC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x1C4, symBinAddr: 0xE308, symSize: 0x58 }
- { offsetInCU: 0xB7, offset: 0x3CEC0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x21C, symBinAddr: 0xE360, symSize: 0x54 }
- { offsetInCU: 0xCB, offset: 0x3CED4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x270, symBinAddr: 0xE3B4, symSize: 0x18 }
- { offsetInCU: 0xDF, offset: 0x3CEE8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x288, symBinAddr: 0xE3CC, symSize: 0x4 }
- { offsetInCU: 0xF3, offset: 0x3CEFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x28C, symBinAddr: 0xE3D0, symSize: 0x20 }
- { offsetInCU: 0x107, offset: 0x3CF10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x2AC, symBinAddr: 0xE3F0, symSize: 0x10 }
- { offsetInCU: 0x12C, offset: 0x3CF35, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE150, symSize: 0x4 }
- { offsetInCU: 0x148, offset: 0x3CF51, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x4, symBinAddr: 0xE154, symSize: 0x4 }
- { offsetInCU: 0x164, offset: 0x3CF6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x8, symBinAddr: 0xE158, symSize: 0x4 }
- { offsetInCU: 0x180, offset: 0x3CF89, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0xC, symBinAddr: 0xE15C, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x3D01D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE400, symSize: 0x28 }
- { offsetInCU: 0x52, offset: 0x3D048, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE400, symSize: 0x28 }
- { offsetInCU: 0xC5, offset: 0x3D0BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x28, symBinAddr: 0xE428, symSize: 0x1B4 }
- { offsetInCU: 0x3A6, offset: 0x3D39C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x1DC, symBinAddr: 0xE5DC, symSize: 0x70 }
- { offsetInCU: 0x4A7, offset: 0x3D49D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x24C, symBinAddr: 0xE64C, symSize: 0x104 }
- { offsetInCU: 0x5DD, offset: 0x3D5D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x350, symBinAddr: 0xE750, symSize: 0x4C }
- { offsetInCU: 0x6C4, offset: 0x3D6BA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x3C0, symBinAddr: 0xE7C0, symSize: 0x9C }
- { offsetInCU: 0x71B, offset: 0x3D711, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x45C, symBinAddr: 0xE85C, symSize: 0x6C }
- { offsetInCU: 0x76C, offset: 0x3D762, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x4C8, symBinAddr: 0xE8C8, symSize: 0x24 }
- { offsetInCU: 0x7CB, offset: 0x3D7C1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x4EC, symBinAddr: 0xE8EC, symSize: 0x2C }
- { offsetInCU: 0x9ED, offset: 0x3D9E3, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x39C, symBinAddr: 0xE79C, symSize: 0x24 }
- { offsetInCU: 0xA98, offset: 0x3DA8E, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x518, symBinAddr: 0xE918, symSize: 0x88 }
- { offsetInCU: 0xB39, offset: 0x3DB2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x5A0, symBinAddr: 0xE9A0, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x3DCDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xE9C0, symSize: 0x48 }
- { offsetInCU: 0x6C, offset: 0x3DD20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xE9C0, symSize: 0x48 }
- { offsetInCU: 0xDB, offset: 0x3DD8F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x88, symBinAddr: 0xEA08, symSize: 0x14 }
- { offsetInCU: 0x10E, offset: 0x3DDC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x9C, symBinAddr: 0xEA1C, symSize: 0x28 }
- { offsetInCU: 0x1A4, offset: 0x3DE58, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xC4, symBinAddr: 0xEA44, symSize: 0x44 }
- { offsetInCU: 0x29E, offset: 0x3DF52, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xEA88, symSize: 0x14 }
- { offsetInCU: 0x2BE, offset: 0x3DF72, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xEA88, symSize: 0x14 }
- { offsetInCU: 0x2FE, offset: 0x3DFB2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x11C, symBinAddr: 0xEA9C, symSize: 0x44 }
- { offsetInCU: 0x3E1, offset: 0x3E095, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x160, symBinAddr: 0xEAE0, symSize: 0x28 }
- { offsetInCU: 0x46D, offset: 0x3E121, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x2A4, symBinAddr: 0xEC24, symSize: 0x58 }
- { offsetInCU: 0x509, offset: 0x3E1BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1C8, symBinAddr: 0xEB48, symSize: 0x4 }
- { offsetInCU: 0x51D, offset: 0x3E1D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1CC, symBinAddr: 0xEB4C, symSize: 0x44 }
- { offsetInCU: 0x531, offset: 0x3E1E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x210, symBinAddr: 0xEB90, symSize: 0x4 }
- { offsetInCU: 0x545, offset: 0x3E1F9, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x214, symBinAddr: 0xEB94, symSize: 0x4C }
- { offsetInCU: 0x559, offset: 0x3E20D, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x260, symBinAddr: 0xEBE0, symSize: 0x44 }
- { offsetInCU: 0x56D, offset: 0x3E221, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x30C, symBinAddr: 0xEC7C, symSize: 0x90 }
- { offsetInCU: 0x581, offset: 0x3E235, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x39C, symBinAddr: 0xED0C, symSize: 0xBC }
- { offsetInCU: 0x595, offset: 0x3E249, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x458, symBinAddr: 0xEDC8, symSize: 0x8 }
- { offsetInCU: 0x5A9, offset: 0x3E25D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x460, symBinAddr: 0xEDD0, symSize: 0x4 }
- { offsetInCU: 0x5BD, offset: 0x3E271, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x464, symBinAddr: 0xEDD4, symSize: 0x8 }
- { offsetInCU: 0x5D1, offset: 0x3E285, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x46C, symBinAddr: 0xEDDC, symSize: 0x10 }
- { offsetInCU: 0x63E, offset: 0x3E2F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x188, symBinAddr: 0xEB08, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x3E432, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xEDEC, symSize: 0x68 }
- { offsetInCU: 0xA6, offset: 0x3E4AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xEDEC, symSize: 0x68 }
- { offsetInCU: 0x2B0, offset: 0x3E6B7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x68, symBinAddr: 0xEE54, symSize: 0x1C0 }
- { offsetInCU: 0x583, offset: 0x3E98A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x228, symBinAddr: 0xF014, symSize: 0xD0 }
- { offsetInCU: 0x7F1, offset: 0x3EBF8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2F8, symBinAddr: 0xF0E4, symSize: 0x8 }
- { offsetInCU: 0x80F, offset: 0x3EC16, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x300, symBinAddr: 0xF0EC, symSize: 0x8 }
- { offsetInCU: 0x82D, offset: 0x3EC34, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x308, symBinAddr: 0xF0F4, symSize: 0x8 }
- { offsetInCU: 0x84B, offset: 0x3EC52, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x310, symBinAddr: 0xF0FC, symSize: 0xD0 }
- { offsetInCU: 0xA02, offset: 0x3EE09, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x3E0, symBinAddr: 0xF1CC, symSize: 0x150 }
- { offsetInCU: 0xC18, offset: 0x3F01F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x530, symBinAddr: 0xF31C, symSize: 0x14C }
- { offsetInCU: 0xE35, offset: 0x3F23C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x67C, symBinAddr: 0xF468, symSize: 0x28 }
- { offsetInCU: 0xE77, offset: 0x3F27E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x6A4, symBinAddr: 0xF490, symSize: 0x50 }
- { offsetInCU: 0xF03, offset: 0x3F30A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x6F4, symBinAddr: 0xF4E0, symSize: 0x50 }
- { offsetInCU: 0xF92, offset: 0x3F399, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x744, symBinAddr: 0xF530, symSize: 0x4 }
- { offsetInCU: 0xFC0, offset: 0x3F3C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x794, symBinAddr: 0xF580, symSize: 0x28 }
- { offsetInCU: 0x125D, offset: 0x3F664, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x7BC, symBinAddr: 0xF5A8, symSize: 0x14 }
- { offsetInCU: 0x1295, offset: 0x3F69C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x7D0, symBinAddr: 0xF5BC, symSize: 0x14 }
- { offsetInCU: 0x12CD, offset: 0x3F6D4, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x7E4, symBinAddr: 0xF5D0, symSize: 0x14 }
- { offsetInCU: 0x1305, offset: 0x3F70C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x9B0, symBinAddr: 0xF79C, symSize: 0x4 }
- { offsetInCU: 0x1319, offset: 0x3F720, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x9B4, symBinAddr: 0xF7A0, symSize: 0x44 }
- { offsetInCU: 0x132D, offset: 0x3F734, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x9F8, symBinAddr: 0xF7E4, symSize: 0x34 }
- { offsetInCU: 0x1341, offset: 0x3F748, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0xA2C, symBinAddr: 0xF818, symSize: 0x8 }
- { offsetInCU: 0x1355, offset: 0x3F75C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0xA34, symBinAddr: 0xF820, symSize: 0x34 }
- { offsetInCU: 0x1369, offset: 0x3F770, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0xA68, symBinAddr: 0xF854, symSize: 0x48 }
- { offsetInCU: 0x137D, offset: 0x3F784, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0xAB0, symBinAddr: 0xF89C, symSize: 0x14 }
- { offsetInCU: 0x1391, offset: 0x3F798, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0xAC4, symBinAddr: 0xF8B0, symSize: 0x38 }
- { offsetInCU: 0x13A5, offset: 0x3F7AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xAFC, symBinAddr: 0xF8E8, symSize: 0x48 }
- { offsetInCU: 0x13B9, offset: 0x3F7C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xB44, symBinAddr: 0xF930, symSize: 0x40 }
- { offsetInCU: 0x13CD, offset: 0x3F7D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xB84, symBinAddr: 0xF970, symSize: 0x10 }
- { offsetInCU: 0x1532, offset: 0x3F939, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x748, symBinAddr: 0xF534, symSize: 0x4C }
- { offsetInCU: 0x1570, offset: 0x3F977, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xF5E4, symSize: 0x98 }
- { offsetInCU: 0x1590, offset: 0x3F997, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xF5E4, symSize: 0x98 }
- { offsetInCU: 0x15A4, offset: 0x3F9AB, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xF5E4, symSize: 0x98 }
- { offsetInCU: 0x15B8, offset: 0x3F9BF, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xF5E4, symSize: 0x98 }
- { offsetInCU: 0x1644, offset: 0x3FA4B, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x890, symBinAddr: 0xF67C, symSize: 0x120 }
- { offsetInCU: 0x27, offset: 0x3FC94, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xF980, symSize: 0x14 }
- { offsetInCU: 0x46, offset: 0x3FCB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xF980, symSize: 0x14 }
- { offsetInCU: 0x85, offset: 0x3FCF2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x14, symBinAddr: 0xF994, symSize: 0xB4 }
- { offsetInCU: 0x176, offset: 0x3FDE3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xC8, symBinAddr: 0xFA48, symSize: 0xC }
- { offsetInCU: 0x194, offset: 0x3FE01, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xD4, symBinAddr: 0xFA54, symSize: 0xC }
- { offsetInCU: 0x1B2, offset: 0x3FE1F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0xE0, symBinAddr: 0xFA60, symSize: 0x3C }
- { offsetInCU: 0x2E8, offset: 0x3FF55, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x11C, symBinAddr: 0xFA9C, symSize: 0x20 }
- { offsetInCU: 0x355, offset: 0x3FFC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x13C, symBinAddr: 0xFABC, symSize: 0x5C }
- { offsetInCU: 0x4EB, offset: 0x40158, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x198, symBinAddr: 0xFB18, symSize: 0x4 }
- { offsetInCU: 0x516, offset: 0x40183, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x19C, symBinAddr: 0xFB1C, symSize: 0x5C }
- { offsetInCU: 0x6C9, offset: 0x40336, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1F8, symBinAddr: 0xFB78, symSize: 0x3C }
- { offsetInCU: 0x82D, offset: 0x4049A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0xFC0C, symSize: 0x20 }
- { offsetInCU: 0x84D, offset: 0x404BA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0xFC0C, symSize: 0x20 }
- { offsetInCU: 0x949, offset: 0x405B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2AC, symBinAddr: 0xFC2C, symSize: 0x4 }
- { offsetInCU: 0x95D, offset: 0x405CA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2B0, symBinAddr: 0xFC30, symSize: 0x44 }
- { offsetInCU: 0x971, offset: 0x405DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x304, symBinAddr: 0xFC74, symSize: 0x94 }
- { offsetInCU: 0x985, offset: 0x405F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x398, symBinAddr: 0xFD08, symSize: 0xBC }
- { offsetInCU: 0x999, offset: 0x40606, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x454, symBinAddr: 0xFDC4, symSize: 0x10 }
- { offsetInCU: 0xA44, offset: 0x406B1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x234, symBinAddr: 0xFBB4, symSize: 0x58 }
- { offsetInCU: 0x27, offset: 0x408B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xFDD4, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x408D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xFDD4, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x408F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0xFDE8, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x40917, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0xFDE8, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x40928, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x18, symBinAddr: 0xFDEC, symSize: 0x118 }
- { offsetInCU: 0x1AE, offset: 0x40A37, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x130, symBinAddr: 0xFF04, symSize: 0x30 }
- { offsetInCU: 0x1C2, offset: 0x40A4B, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x164, symBinAddr: 0xFF34, symSize: 0x14 }
- { offsetInCU: 0x1D6, offset: 0x40A5F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x178, symBinAddr: 0xFF48, symSize: 0x48 }
- { offsetInCU: 0x1EA, offset: 0x40A73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x1C0, symBinAddr: 0xFF90, symSize: 0x48 }
- { offsetInCU: 0x1FE, offset: 0x40A87, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x208, symBinAddr: 0xFFD8, symSize: 0x18 }
- { offsetInCU: 0x212, offset: 0x40A9B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x220, symBinAddr: 0xFFF0, symSize: 0x4 }
- { offsetInCU: 0x226, offset: 0x40AAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x224, symBinAddr: 0xFFF4, symSize: 0x1C }
- { offsetInCU: 0x23A, offset: 0x40AC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x240, symBinAddr: 0x10010, symSize: 0x10 }
- { offsetInCU: 0x25F, offset: 0x40AE8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x4, symBinAddr: 0xFDD8, symSize: 0x4 }
- { offsetInCU: 0x27B, offset: 0x40B04, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x8, symBinAddr: 0xFDDC, symSize: 0x4 }
- { offsetInCU: 0x297, offset: 0x40B20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0xC, symBinAddr: 0xFDE0, symSize: 0x4 }
- { offsetInCU: 0x2B3, offset: 0x40B3C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x10, symBinAddr: 0xFDE4, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x40BE5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10020, symSize: 0x14 }
- { offsetInCU: 0x4B, offset: 0x40C09, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10020, symSize: 0x14 }
- { offsetInCU: 0x7E, offset: 0x40C3C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x14, symBinAddr: 0x10034, symSize: 0x18 }
- { offsetInCU: 0xA9, offset: 0x40C67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x2C, symBinAddr: 0x1004C, symSize: 0x28 }
- { offsetInCU: 0x13F, offset: 0x40CFD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x54, symBinAddr: 0x10074, symSize: 0x44 }
- { offsetInCU: 0x239, offset: 0x40DF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0x100B8, symSize: 0x14 }
- { offsetInCU: 0x259, offset: 0x40E17, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0x100B8, symSize: 0x14 }
- { offsetInCU: 0x299, offset: 0x40E57, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xAC, symBinAddr: 0x100CC, symSize: 0x44 }
- { offsetInCU: 0x37C, offset: 0x40F3A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF0, symBinAddr: 0x10110, symSize: 0x28 }
- { offsetInCU: 0x405, offset: 0x40FC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x158, symBinAddr: 0x10178, symSize: 0x4 }
- { offsetInCU: 0x419, offset: 0x40FD7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x15C, symBinAddr: 0x1017C, symSize: 0x44 }
- { offsetInCU: 0x42D, offset: 0x40FEB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1B0, symBinAddr: 0x101C0, symSize: 0x90 }
- { offsetInCU: 0x441, offset: 0x40FFF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x240, symBinAddr: 0x10250, symSize: 0xBC }
- { offsetInCU: 0x455, offset: 0x41013, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2FC, symBinAddr: 0x1030C, symSize: 0x8 }
- { offsetInCU: 0x469, offset: 0x41027, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x304, symBinAddr: 0x10314, symSize: 0x4 }
- { offsetInCU: 0x47D, offset: 0x4103B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x308, symBinAddr: 0x10318, symSize: 0x8 }
- { offsetInCU: 0x491, offset: 0x4104F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x310, symBinAddr: 0x10320, symSize: 0x10 }
- { offsetInCU: 0x4E9, offset: 0x410A7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x118, symBinAddr: 0x10138, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x411D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x10330, symSize: 0x6C }
- { offsetInCU: 0xAC, offset: 0x41256, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x10330, symSize: 0x6C }
- { offsetInCU: 0xF0, offset: 0x4129A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x6C, symBinAddr: 0x1039C, symSize: 0x24 }
- { offsetInCU: 0x155, offset: 0x412FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0x103C0, symSize: 0x9C }
- { offsetInCU: 0x1BD, offset: 0x41367, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x12C, symBinAddr: 0x1045C, symSize: 0x2C }
- { offsetInCU: 0x217, offset: 0x413C1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x158, symBinAddr: 0x10488, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x41484, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x104A8, symSize: 0x4 }
- { offsetInCU: 0x46, offset: 0x414A3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x104A8, symSize: 0x4 }
- { offsetInCU: 0x5A, offset: 0x414B7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x4, symBinAddr: 0x104AC, symSize: 0x14 }
- { offsetInCU: 0xC1, offset: 0x4151E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x18, symBinAddr: 0x104C0, symSize: 0xC }
- { offsetInCU: 0xDF, offset: 0x4153C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x24, symBinAddr: 0x104CC, symSize: 0x8 }
- { offsetInCU: 0xFD, offset: 0x4155A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x2C, symBinAddr: 0x104D4, symSize: 0x8 }
- { offsetInCU: 0x11B, offset: 0x41578, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x34, symBinAddr: 0x104DC, symSize: 0x8 }
- { offsetInCU: 0x139, offset: 0x41596, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x3C, symBinAddr: 0x104E4, symSize: 0x8 }
- { offsetInCU: 0x157, offset: 0x415B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x44, symBinAddr: 0x104EC, symSize: 0x198 }
- { offsetInCU: 0x287, offset: 0x416E4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1DC, symBinAddr: 0x10684, symSize: 0x4 }
- { offsetInCU: 0x2B2, offset: 0x4170F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x10688, symSize: 0x4 }
- { offsetInCU: 0x2D2, offset: 0x4172F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x10688, symSize: 0x4 }
- { offsetInCU: 0x2E3, offset: 0x41740, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1E4, symBinAddr: 0x1068C, symSize: 0x48 }
- { offsetInCU: 0x316, offset: 0x41773, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x22C, symBinAddr: 0x106D4, symSize: 0x30 }
- { offsetInCU: 0x32A, offset: 0x41787, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x260, symBinAddr: 0x10704, symSize: 0x14 }
- { offsetInCU: 0x33E, offset: 0x4179B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x274, symBinAddr: 0x10718, symSize: 0x44 }
- { offsetInCU: 0x352, offset: 0x417AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x2B8, symBinAddr: 0x1075C, symSize: 0x4C }
- { offsetInCU: 0x366, offset: 0x417C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x304, symBinAddr: 0x107A8, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x418B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x107B8, symSize: 0xC }
- { offsetInCU: 0x4B, offset: 0x418D8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x107B8, symSize: 0xC }
- { offsetInCU: 0x66, offset: 0x418F3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0xC, symBinAddr: 0x107C4, symSize: 0x18 }
- { offsetInCU: 0xB8, offset: 0x41945, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0x108E8, symSize: 0x8 }
- { offsetInCU: 0xD4, offset: 0x41961, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0x108F0, symSize: 0x10 }
- { offsetInCU: 0xEC, offset: 0x41979, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0x108F0, symSize: 0x10 }
- { offsetInCU: 0x109, offset: 0x41996, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x38, symBinAddr: 0x107F0, symSize: 0x4 }
- { offsetInCU: 0x11D, offset: 0x419AA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x3C, symBinAddr: 0x107F4, symSize: 0x44 }
- { offsetInCU: 0x147, offset: 0x419D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x158, symBinAddr: 0x10900, symSize: 0x90 }
- { offsetInCU: 0x15B, offset: 0x419E8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x1E8, symBinAddr: 0x10990, symSize: 0xBC }
- { offsetInCU: 0x16F, offset: 0x419FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2A4, symBinAddr: 0x10A4C, symSize: 0x8 }
- { offsetInCU: 0x183, offset: 0x41A10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2AC, symBinAddr: 0x10A54, symSize: 0x4 }
- { offsetInCU: 0x197, offset: 0x41A24, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2B0, symBinAddr: 0x10A58, symSize: 0x8 }
- { offsetInCU: 0x1AB, offset: 0x41A38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x2B8, symBinAddr: 0x10A60, symSize: 0x10 }
- { offsetInCU: 0x1E5, offset: 0x41A72, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x24, symBinAddr: 0x107DC, symSize: 0x14 }
- { offsetInCU: 0x276, offset: 0x41B03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0x10838, symSize: 0x44 }
- { offsetInCU: 0x34E, offset: 0x41BDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC4, symBinAddr: 0x1087C, symSize: 0x2C }
- { offsetInCU: 0x3CA, offset: 0x41C57, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0x108A8, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x41DF5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xBC, symBinAddr: 0x10B2C, symSize: 0x4C }
- { offsetInCU: 0xE0, offset: 0x41E3E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x16C, symBinAddr: 0x10BDC, symSize: 0x48 }
- { offsetInCU: 0xFF, offset: 0x41E5D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1F8, symBinAddr: 0x10C68, symSize: 0x8 }
- { offsetInCU: 0x12C, offset: 0x41E8A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x200, symBinAddr: 0x10C70, symSize: 0x64 }
- { offsetInCU: 0x151, offset: 0x41EAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x264, symBinAddr: 0x10CD4, symSize: 0x464 }
- { offsetInCU: 0x553, offset: 0x422B1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x7B0, symBinAddr: 0x11178, symSize: 0x84 }
- { offsetInCU: 0x602, offset: 0x42360, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x834, symBinAddr: 0x111FC, symSize: 0x68 }
- { offsetInCU: 0x69B, offset: 0x423F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x89C, symBinAddr: 0x11264, symSize: 0x1C }
- { offsetInCU: 0x6E0, offset: 0x4243E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x8B8, symBinAddr: 0x11280, symSize: 0x84 }
- { offsetInCU: 0x78F, offset: 0x424ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0x93C, symBinAddr: 0x11304, symSize: 0x68 }
- { offsetInCU: 0x828, offset: 0x42586, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0x9A4, symBinAddr: 0x1136C, symSize: 0xC }
- { offsetInCU: 0x882, offset: 0x425E0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0x9B0, symBinAddr: 0x11378, symSize: 0x1C }
- { offsetInCU: 0x8C7, offset: 0x42625, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0x9CC, symBinAddr: 0x11394, symSize: 0x6C }
- { offsetInCU: 0x8EC, offset: 0x4264A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xA38, symBinAddr: 0x11400, symSize: 0x2C4 }
- { offsetInCU: 0x9E9, offset: 0x42747, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xCFC, symBinAddr: 0x116C4, symSize: 0xD4 }
- { offsetInCU: 0xB14, offset: 0x42872, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xDD0, symBinAddr: 0x11798, symSize: 0xD4 }
- { offsetInCU: 0xC3F, offset: 0x4299D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0xF58, symBinAddr: 0x11920, symSize: 0xD4 }
- { offsetInCU: 0xD6A, offset: 0x42AC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x108C, symBinAddr: 0x11A54, symSize: 0xD4 }
- { offsetInCU: 0xE95, offset: 0x42BF3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x1160, symBinAddr: 0x11B28, symSize: 0xD4 }
- { offsetInCU: 0xFC0, offset: 0x42D1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x1234, symBinAddr: 0x11BFC, symSize: 0xD4 }
- { offsetInCU: 0x10EB, offset: 0x42E49, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x1308, symBinAddr: 0x11CD0, symSize: 0xD4 }
- { offsetInCU: 0x1216, offset: 0x42F74, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x13DC, symBinAddr: 0x11DA4, symSize: 0xD4 }
- { offsetInCU: 0x135F, offset: 0x430BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x14B0, symBinAddr: 0x11E78, symSize: 0xC8 }
- { offsetInCU: 0x150C, offset: 0x4326A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1578, symBinAddr: 0x11F40, symSize: 0x28 }
- { offsetInCU: 0x1914, offset: 0x43672, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x15A0, symBinAddr: 0x11F68, symSize: 0x9E8 }
- { offsetInCU: 0x267D, offset: 0x443DB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x1F88, symBinAddr: 0x12950, symSize: 0x60 }
- { offsetInCU: 0x27B0, offset: 0x4450E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x1FE8, symBinAddr: 0x129B0, symSize: 0x220 }
- { offsetInCU: 0x2AB9, offset: 0x44817, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2208, symBinAddr: 0x12BD0, symSize: 0x70 }
- { offsetInCU: 0x2BB2, offset: 0x44910, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2278, symBinAddr: 0x12C40, symSize: 0x10C }
- { offsetInCU: 0x2CE1, offset: 0x44A3F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x2384, symBinAddr: 0x12D4C, symSize: 0x5C }
- { offsetInCU: 0x2D8F, offset: 0x44AED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x23E0, symBinAddr: 0x12DA8, symSize: 0x30 }
- { offsetInCU: 0x2DAC, offset: 0x44B0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2410, symBinAddr: 0x12DD8, symSize: 0x18 }
- { offsetInCU: 0x2E63, offset: 0x44BC1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2428, symBinAddr: 0x12DF0, symSize: 0x348 }
- { offsetInCU: 0x3351, offset: 0x450AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2770, symBinAddr: 0x13138, symSize: 0x60 }
- { offsetInCU: 0x33ED, offset: 0x4514B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x27D0, symBinAddr: 0x13198, symSize: 0x210 }
- { offsetInCU: 0x3666, offset: 0x453C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x29E0, symBinAddr: 0x133A8, symSize: 0x70 }
- { offsetInCU: 0x370F, offset: 0x4546D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x2A50, symBinAddr: 0x13418, symSize: 0x104 }
- { offsetInCU: 0x37EF, offset: 0x4554D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x2B54, symBinAddr: 0x1351C, symSize: 0x5C }
- { offsetInCU: 0x383E, offset: 0x4559C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x2BB0, symBinAddr: 0x13578, symSize: 0x6C }
- { offsetInCU: 0x386B, offset: 0x455C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x2C1C, symBinAddr: 0x135E4, symSize: 0x1C }
- { offsetInCU: 0x3899, offset: 0x455F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0x10A70, symSize: 0x50 }
- { offsetInCU: 0x38CF, offset: 0x4562D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x50, symBinAddr: 0x10AC0, symSize: 0x6C }
- { offsetInCU: 0x390F, offset: 0x4566D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0x108, symBinAddr: 0x10B78, symSize: 0x64 }
- { offsetInCU: 0x3951, offset: 0x456AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x1B4, symBinAddr: 0x10C24, symSize: 0x44 }
- { offsetInCU: 0x3A57, offset: 0x457B5, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x730, symBinAddr: 0x11138, symSize: 0x20 }
- { offsetInCU: 0x3A6B, offset: 0x457C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x750, symBinAddr: 0x11158, symSize: 0x20 }
- { offsetInCU: 0x3B93, offset: 0x458F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0xEA4, symBinAddr: 0x1186C, symSize: 0x6C }
- { offsetInCU: 0x3BC6, offset: 0x45924, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0xF10, symBinAddr: 0x118D8, symSize: 0x48 }
- { offsetInCU: 0x3C82, offset: 0x459E0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x102C, symBinAddr: 0x119F4, symSize: 0x60 }
- { offsetInCU: 0x40E5, offset: 0x45E43, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x2C38, symBinAddr: 0x13600, symSize: 0x60 }
- { offsetInCU: 0x4115, offset: 0x45E73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x2D44, symBinAddr: 0x13684, symSize: 0x60 }
- { offsetInCU: 0x4145, offset: 0x45EA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x2DA4, symBinAddr: 0x136E4, symSize: 0x88 }
- { offsetInCU: 0x4179, offset: 0x45ED7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x2E2C, symBinAddr: 0x1376C, symSize: 0x20 }
- { offsetInCU: 0x41A9, offset: 0x45F07, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x2E4C, symBinAddr: 0x1378C, symSize: 0x88 }
- { offsetInCU: 0x41D9, offset: 0x45F37, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x2ED4, symBinAddr: 0x13814, symSize: 0x80 }
- { offsetInCU: 0x4209, offset: 0x45F67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x2F54, symBinAddr: 0x13894, symSize: 0x48 }
- { offsetInCU: 0x4265, offset: 0x45FC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x2F9C, symBinAddr: 0x138DC, symSize: 0x24 }
- { offsetInCU: 0x4299, offset: 0x45FF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x2FC0, symBinAddr: 0x13900, symSize: 0x24 }
- { offsetInCU: 0x42CD, offset: 0x4602B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x2FE4, symBinAddr: 0x13924, symSize: 0x28 }
- { offsetInCU: 0x4301, offset: 0x4605F, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x300C, symBinAddr: 0x1394C, symSize: 0x28 }
- { offsetInCU: 0x432A, offset: 0x46088, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3034, symBinAddr: 0x13974, symSize: 0x28 }
- { offsetInCU: 0x433E, offset: 0x4609C, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3308, symBinAddr: 0x13C48, symSize: 0x168 }
...

@ -24,7 +24,7 @@ public enum WinningReason {
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
@ -39,8 +39,13 @@ public enum BoardFailingReason {
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
@ -108,14 +113,24 @@ public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.Player {
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
@ -181,6 +196,10 @@ public enum Owner {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
@ -201,28 +220,38 @@ public enum Animal : Swift.Int {
get
}
}
public struct Game {
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public mutating func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public mutating func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) -> Swift.Void)
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public mutating func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public mutating func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public mutating func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public mutating func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public mutating func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public mutating func start() async throws
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}

@ -24,7 +24,7 @@ public enum WinningReason {
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
@ -39,8 +39,13 @@ public enum BoardFailingReason {
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
@ -108,14 +113,24 @@ public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.Player {
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
@ -181,6 +196,10 @@ public enum Owner {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
@ -201,28 +220,38 @@ public enum Animal : Swift.Int {
get
}
}
public struct Game {
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public mutating func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public mutating func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) -> Swift.Void)
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public mutating func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public mutating func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public mutating func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public mutating func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public mutating func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public mutating func start() async throws
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}

@ -24,7 +24,7 @@ public enum WinningReason {
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
@ -39,8 +39,13 @@ public enum BoardFailingReason {
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
@ -108,14 +113,24 @@ public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.Player {
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
@ -181,6 +196,10 @@ public enum Owner {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
@ -201,28 +220,38 @@ public enum Animal : Swift.Int {
get
}
}
public struct Game {
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public mutating func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public mutating func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) -> Swift.Void)
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public mutating func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public mutating func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public mutating func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public mutating func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public mutating func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public mutating func start() async throws
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}

@ -24,7 +24,7 @@ public enum WinningReason {
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
@ -39,8 +39,13 @@ public enum BoardFailingReason {
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
@ -108,14 +113,24 @@ public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.Player {
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) -> DouShouQiModel.Move?
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
@ -181,6 +196,10 @@ public enum Owner {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
@ -201,28 +220,38 @@ public enum Animal : Swift.Int {
get
}
}
public struct Game {
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public mutating func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public mutating func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) -> Swift.Void)
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public mutating func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public mutating func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public mutating func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public mutating func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public mutating func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public mutating func start() async throws
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}

@ -18,11 +18,11 @@
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
<data>
ORHQTNNRc9+IsP4LksefJ/Un4co=
5wlrw/S604f6EkkdO0sjydo0+Bc=
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
<data>
TrksqYdbCnunTEUAwWwTpaYcpsw=
iWelfKfa40hASjZTv+0MmwJpt14=
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
<data>
@ -30,19 +30,19 @@
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
<data>
TrksqYdbCnunTEUAwWwTpaYcpsw=
iWelfKfa40hASjZTv+0MmwJpt14=
</data>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
<data>
niSvjNrBHUwlxy9t/BiJgPTMiPg=
hIkz8AGNOjj+boCk29AkmkNg7U4=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
<data>
ORHQTNNRc9+IsP4LksefJ/Un4co=
5wlrw/S604f6EkkdO0sjydo0+Bc=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
<data>
YcS2+5tyo+CmBm6pQDGd5mEiThU=
ulNUxrIsFIWqKNx6spilb7IJVR0=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
<data>
@ -50,11 +50,11 @@
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
<data>
YcS2+5tyo+CmBm6pQDGd5mEiThU=
ulNUxrIsFIWqKNx6spilb7IJVR0=
</data>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
<data>
N3Eb6UlFU35CftT5wPZyYa92V5E=
0ZAcidlUuohX1myhyQosgBBZq1s=
</data>
<key>Modules/module.modulemap</key>
<data>
@ -81,14 +81,14 @@
<dict>
<key>hash2</key>
<data>
Pt6SWYmHEErGtBh0mEB4VEPht9Iux6dxkyyQGWWhG/Y=
btM982otm47LMNIetdE5JR553fM9PjFPuS8AXm0+EpQ=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface</key>
<dict>
<key>hash2</key>
<data>
qTNo5hgcTOuf2g689PNLik8dWCGccEAjtekFLXp1wUk=
oe48ffKwbmJhKUMG/td3wfVID9DF4QgJz/dIPJweV5g=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
@ -102,28 +102,28 @@
<dict>
<key>hash2</key>
<data>
qTNo5hgcTOuf2g689PNLik8dWCGccEAjtekFLXp1wUk=
oe48ffKwbmJhKUMG/td3wfVID9DF4QgJz/dIPJweV5g=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/arm64-apple-ios-simulator.swiftmodule</key>
<dict>
<key>hash2</key>
<data>
mN4VlJdyDumXrJGI22VAiH/Ul6Oc2C+uCwrh87ZQa7M=
q85NBK13clOQfgVFgVjmL6pWsskBEw+Z45xPFMxL1+E=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
<dict>
<key>hash2</key>
<data>
Pt6SWYmHEErGtBh0mEB4VEPht9Iux6dxkyyQGWWhG/Y=
btM982otm47LMNIetdE5JR553fM9PjFPuS8AXm0+EpQ=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
<dict>
<key>hash2</key>
<data>
z3xla/MZG9g10flpEIOyL+U5cXaaJ6kKdYGBkiRDkS8=
agKcCCqs9pHq1e94l4ouc5WojSYeRzzGkrHxkw9FZ8c=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
@ -137,14 +137,14 @@
<dict>
<key>hash2</key>
<data>
z3xla/MZG9g10flpEIOyL+U5cXaaJ6kKdYGBkiRDkS8=
agKcCCqs9pHq1e94l4ouc5WojSYeRzzGkrHxkw9FZ8c=
</data>
</dict>
<key>Modules/DouShouQiModel.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
<dict>
<key>hash2</key>
<data>
Qt7bWwgfMeu4WIFkhcpt6CfGKzHwTtpnXsLo3vVFEMI=
0C4f5rpOmGFG3B9PLb/e4rylk+OdtHUNKJ+aW1e+MCE=
</data>
</dict>
<key>Modules/module.modulemap</key>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.fr.uca.iut.DouShouQiModel</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

@ -0,0 +1,504 @@
---
triple: 'arm64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x2EDE3, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x10F10, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x2EE18, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x10F48, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x2EE55, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xE64, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x2EE79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xE64, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x2EE9C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0xE7C, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x2EEBC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0xE7C, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x2EECD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0xFAC, symSize: 0x68 }
- { offsetInCU: 0xDD, offset: 0x2EF0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0xE68, symSize: 0x14 }
- { offsetInCU: 0x110, offset: 0x2EF3E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0xE80, symSize: 0x28 }
- { offsetInCU: 0x1A6, offset: 0x2EFD4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0xEA8, symSize: 0x44 }
- { offsetInCU: 0x2A0, offset: 0x2F0CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0xEEC, symSize: 0x14 }
- { offsetInCU: 0x2C0, offset: 0x2F0EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0xEEC, symSize: 0x14 }
- { offsetInCU: 0x300, offset: 0x2F12E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0xF00, symSize: 0x44 }
- { offsetInCU: 0x3E3, offset: 0x2F211, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0xF44, symSize: 0x28 }
- { offsetInCU: 0x46C, offset: 0x2F29A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x1014, symSize: 0x4 }
- { offsetInCU: 0x480, offset: 0x2F2AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x1B4, symBinAddr: 0x1018, symSize: 0x44 }
- { offsetInCU: 0x494, offset: 0x2F2C2, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1F8, symBinAddr: 0x105C, symSize: 0xC }
- { offsetInCU: 0x4A8, offset: 0x2F2D6, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x204, symBinAddr: 0x1068, symSize: 0x4 }
- { offsetInCU: 0x4BC, offset: 0x2F2EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x208, symBinAddr: 0x106C, symSize: 0xAC }
- { offsetInCU: 0x4D0, offset: 0x2F2FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x2B4, symBinAddr: 0x1118, symSize: 0xC4 }
- { offsetInCU: 0x4E4, offset: 0x2F312, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x378, symBinAddr: 0x11DC, symSize: 0x14 }
- { offsetInCU: 0x4F8, offset: 0x2F326, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x38C, symBinAddr: 0x11F0, symSize: 0x4 }
- { offsetInCU: 0x50C, offset: 0x2F33A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x390, symBinAddr: 0x11F4, symSize: 0x24 }
- { offsetInCU: 0x520, offset: 0x2F34E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3B4, symBinAddr: 0x1218, symSize: 0x10 }
- { offsetInCU: 0x534, offset: 0x2F362, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3C4, symBinAddr: 0x1228, symSize: 0xC }
- { offsetInCU: 0x548, offset: 0x2F376, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3D0, symBinAddr: 0x1234, symSize: 0x90 }
- { offsetInCU: 0x55C, offset: 0x2F38A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x460, symBinAddr: 0x12C4, symSize: 0xBC }
- { offsetInCU: 0x570, offset: 0x2F39E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x51C, symBinAddr: 0x1380, symSize: 0x8 }
- { offsetInCU: 0x584, offset: 0x2F3B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x524, symBinAddr: 0x1388, symSize: 0x4 }
- { offsetInCU: 0x598, offset: 0x2F3C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x528, symBinAddr: 0x138C, symSize: 0x8 }
- { offsetInCU: 0x5AC, offset: 0x2F3DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x530, symBinAddr: 0x1394, symSize: 0x10 }
- { offsetInCU: 0x626, offset: 0x2F454, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0xF6C, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x2F597, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x13A4, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x2F5BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x13A4, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x2F5DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x13BC, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x2F5FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x13BC, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x2F60F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x14EC, symSize: 0x7C }
- { offsetInCU: 0xF5, offset: 0x2F665, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x13A8, symSize: 0x14 }
- { offsetInCU: 0x128, offset: 0x2F698, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x13C0, symSize: 0x28 }
- { offsetInCU: 0x1BE, offset: 0x2F72E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x13E8, symSize: 0x44 }
- { offsetInCU: 0x2B8, offset: 0x2F828, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x142C, symSize: 0x14 }
- { offsetInCU: 0x2D8, offset: 0x2F848, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x142C, symSize: 0x14 }
- { offsetInCU: 0x318, offset: 0x2F888, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x1440, symSize: 0x44 }
- { offsetInCU: 0x3FB, offset: 0x2F96B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x1484, symSize: 0x28 }
- { offsetInCU: 0x484, offset: 0x2F9F4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1C4, symBinAddr: 0x1568, symSize: 0x4 }
- { offsetInCU: 0x498, offset: 0x2FA08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1C8, symBinAddr: 0x156C, symSize: 0x44 }
- { offsetInCU: 0x4AC, offset: 0x2FA1C, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x20C, symBinAddr: 0x15B0, symSize: 0x14 }
- { offsetInCU: 0x4C0, offset: 0x2FA30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x224, symBinAddr: 0x15C4, symSize: 0x74 }
- { offsetInCU: 0x4D4, offset: 0x2FA44, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x298, symBinAddr: 0x1638, symSize: 0x8C }
- { offsetInCU: 0x4E8, offset: 0x2FA58, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x324, symBinAddr: 0x16C4, symSize: 0x18 }
- { offsetInCU: 0x4FC, offset: 0x2FA6C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x33C, symBinAddr: 0x16DC, symSize: 0x4 }
- { offsetInCU: 0x510, offset: 0x2FA80, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x340, symBinAddr: 0x16E0, symSize: 0x18 }
- { offsetInCU: 0x524, offset: 0x2FA94, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x358, symBinAddr: 0x16F8, symSize: 0x10 }
- { offsetInCU: 0x538, offset: 0x2FAA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x374, symBinAddr: 0x1708, symSize: 0x90 }
- { offsetInCU: 0x54C, offset: 0x2FABC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x404, symBinAddr: 0x1798, symSize: 0xBC }
- { offsetInCU: 0x560, offset: 0x2FAD0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x1854, symSize: 0x8 }
- { offsetInCU: 0x574, offset: 0x2FAE4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4C8, symBinAddr: 0x185C, symSize: 0x4 }
- { offsetInCU: 0x588, offset: 0x2FAF8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4CC, symBinAddr: 0x1860, symSize: 0x8 }
- { offsetInCU: 0x59C, offset: 0x2FB0C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4D4, symBinAddr: 0x1868, symSize: 0x10 }
- { offsetInCU: 0x5FA, offset: 0x2FB6A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x14AC, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x2FC99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x1878, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x2FD0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x1878, symSize: 0xD0 }
- { offsetInCU: 0xEE, offset: 0x2FD60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x1948, symSize: 0xB0 }
- { offsetInCU: 0x189, offset: 0x2FDFB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x1A08, symSize: 0xA0 }
- { offsetInCU: 0x1DE, offset: 0x2FE50, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x1AA8, symSize: 0x70 }
- { offsetInCU: 0x22D, offset: 0x2FE9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x1B18, symSize: 0xC }
- { offsetInCU: 0x2A9, offset: 0x2FF1B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2AC, symBinAddr: 0x1B24, symSize: 0x38 }
- { offsetInCU: 0x310, offset: 0x2FF82, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x2E4, symBinAddr: 0x1B5C, symSize: 0x2C }
- { offsetInCU: 0x384, offset: 0x2FFF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x310, symBinAddr: 0x1B88, symSize: 0x108 }
- { offsetInCU: 0x507, offset: 0x30179, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x418, symBinAddr: 0x1C90, symSize: 0x70 }
- { offsetInCU: 0x5BF, offset: 0x30231, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x488, symBinAddr: 0x1D00, symSize: 0x100 }
- { offsetInCU: 0x6AE, offset: 0x30320, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x588, symBinAddr: 0x1E00, symSize: 0x40 }
- { offsetInCU: 0x70C, offset: 0x3037E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x5D0, symBinAddr: 0x1E48, symSize: 0x2C }
- { offsetInCU: 0x75D, offset: 0x303CF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x5FC, symBinAddr: 0x1E74, symSize: 0x34 }
- { offsetInCU: 0x87E, offset: 0x304F0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x180, symBinAddr: 0x19F8, symSize: 0x10 }
- { offsetInCU: 0x92C, offset: 0x3059E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x5C8, symBinAddr: 0x1E40, symSize: 0x8 }
- { offsetInCU: 0x959, offset: 0x305CB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x630, symBinAddr: 0x1EA8, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x3076A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x29A60, symBinAddr: 0x19B40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x30784, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x6D30, symBinAddr: 0x18720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x307F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D38, symBinAddr: 0x18728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x3080C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x6D40, symBinAddr: 0x18730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x30826, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D48, symBinAddr: 0x18738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x30840, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x29A68, symBinAddr: 0x19B48, symSize: 0x0 }
- { offsetInCU: 0x284, offset: 0x3099F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x1F94, symSize: 0x2DC }
- { offsetInCU: 0xA99, offset: 0x311B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2DC, symBinAddr: 0x2270, symSize: 0x78 }
- { offsetInCU: 0xAD7, offset: 0x311F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x354, symBinAddr: 0x22E8, symSize: 0x14 }
- { offsetInCU: 0xB01, offset: 0x3121C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x3AC, symBinAddr: 0x2340, symSize: 0x30 }
- { offsetInCU: 0xB41, offset: 0x3125C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3DC, symBinAddr: 0x2370, symSize: 0x78 }
- { offsetInCU: 0xB93, offset: 0x312AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x6A8, symBinAddr: 0x263C, symSize: 0x30 }
- { offsetInCU: 0xBD8, offset: 0x312F3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x6D8, symBinAddr: 0x266C, symSize: 0x54 }
- { offsetInCU: 0xC3D, offset: 0x31358, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x72C, symBinAddr: 0x26C0, symSize: 0x458 }
- { offsetInCU: 0x15D4, offset: 0x31CEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB84, symBinAddr: 0x2B18, symSize: 0x62C }
- { offsetInCU: 0x1FE8, offset: 0x32703, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x11B0, symBinAddr: 0x3144, symSize: 0x5F8 }
- { offsetInCU: 0x295A, offset: 0x33075, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x17A8, symBinAddr: 0x373C, symSize: 0x6C4 }
- { offsetInCU: 0x340F, offset: 0x33B2A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1E6C, symBinAddr: 0x3E00, symSize: 0x44C }
- { offsetInCU: 0x3A6C, offset: 0x34187, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x22B8, symBinAddr: 0x424C, symSize: 0x300 }
- { offsetInCU: 0x3FE8, offset: 0x34703, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x25B8, symBinAddr: 0x454C, symSize: 0x56C }
- { offsetInCU: 0x491C, offset: 0x35037, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B24, symBinAddr: 0x4AB8, symSize: 0x12C }
- { offsetInCU: 0x4AEC, offset: 0x35207, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2C50, symBinAddr: 0x4BE4, symSize: 0x140 }
- { offsetInCU: 0x4D56, offset: 0x35471, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x2D90, symBinAddr: 0x4D24, symSize: 0xA0 }
- { offsetInCU: 0x4E40, offset: 0x3555B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x2E30, symBinAddr: 0x4DC4, symSize: 0x104 }
- { offsetInCU: 0x50CF, offset: 0x357EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x2F34, symBinAddr: 0x4EC8, symSize: 0x3C }
- { offsetInCU: 0x51E0, offset: 0x358FB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x2F70, symBinAddr: 0x4F04, symSize: 0x188 }
- { offsetInCU: 0x537E, offset: 0x35A99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x30F8, symBinAddr: 0x508C, symSize: 0x424 }
- { offsetInCU: 0x5879, offset: 0x35F94, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x351C, symBinAddr: 0x54B0, symSize: 0x8 }
- { offsetInCU: 0x588D, offset: 0x35FA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3524, symBinAddr: 0x54B8, symSize: 0x8 }
- { offsetInCU: 0x58BF, offset: 0x35FDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x352C, symBinAddr: 0x54C0, symSize: 0x78 }
- { offsetInCU: 0x590C, offset: 0x36027, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x35A4, symBinAddr: 0x5538, symSize: 0x14 }
- { offsetInCU: 0x5944, offset: 0x3605F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x35B8, symBinAddr: 0x554C, symSize: 0x4 }
- { offsetInCU: 0x5960, offset: 0x3607B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x35BC, symBinAddr: 0x5550, symSize: 0x14 }
- { offsetInCU: 0x597C, offset: 0x36097, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x35D0, symBinAddr: 0x5564, symSize: 0x14 }
- { offsetInCU: 0x5998, offset: 0x360B3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x35E4, symBinAddr: 0x5578, symSize: 0x4 }
- { offsetInCU: 0x59B4, offset: 0x360CF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x35E8, symBinAddr: 0x557C, symSize: 0x4 }
- { offsetInCU: 0x59D0, offset: 0x360EB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x35EC, symBinAddr: 0x5580, symSize: 0x4 }
- { offsetInCU: 0x59EC, offset: 0x36107, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x35F0, symBinAddr: 0x5584, symSize: 0x14 }
- { offsetInCU: 0x5A21, offset: 0x3613C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x5598, symSize: 0x8 }
- { offsetInCU: 0x5A41, offset: 0x3615C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x5598, symSize: 0x8 }
- { offsetInCU: 0x5A66, offset: 0x36181, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x55A0, symSize: 0x8 }
- { offsetInCU: 0x5A86, offset: 0x361A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x55A0, symSize: 0x8 }
- { offsetInCU: 0x5A99, offset: 0x361B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5710, symBinAddr: 0x76A4, symSize: 0x28C }
- { offsetInCU: 0x5E0F, offset: 0x3652A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x599C, symBinAddr: 0x7930, symSize: 0x3A8 }
- { offsetInCU: 0x629F, offset: 0x369BA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5D44, symBinAddr: 0x7CD8, symSize: 0x15C }
- { offsetInCU: 0x6492, offset: 0x36BAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5EA0, symBinAddr: 0x7E34, symSize: 0x178 }
- { offsetInCU: 0x6572, offset: 0x36C8D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6018, symBinAddr: 0x7FAC, symSize: 0xDC }
- { offsetInCU: 0x6689, offset: 0x36DA4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x368, symBinAddr: 0x22FC, symSize: 0x14 }
- { offsetInCU: 0x66A3, offset: 0x36DBE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x37C, symBinAddr: 0x2310, symSize: 0x30 }
- { offsetInCU: 0x66D9, offset: 0x36DF4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x454, symBinAddr: 0x23E8, symSize: 0x30 }
- { offsetInCU: 0x66F3, offset: 0x36E0E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x510, symBinAddr: 0x24A4, symSize: 0x14 }
- { offsetInCU: 0x670D, offset: 0x36E28, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x524, symBinAddr: 0x24B8, symSize: 0x24 }
- { offsetInCU: 0x6C29, offset: 0x37344, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3614, symBinAddr: 0x55A8, symSize: 0xB0 }
- { offsetInCU: 0x6C9E, offset: 0x373B9, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x36C4, symBinAddr: 0x5658, symSize: 0x70 }
- { offsetInCU: 0x6CCB, offset: 0x373E6, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3734, symBinAddr: 0x56C8, symSize: 0x3C }
- { offsetInCU: 0x6D0E, offset: 0x37429, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3770, symBinAddr: 0x5704, symSize: 0x64 }
- { offsetInCU: 0x6D86, offset: 0x374A1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x37D4, symBinAddr: 0x5768, symSize: 0xE0 }
- { offsetInCU: 0x6EBE, offset: 0x375D9, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x38B4, symBinAddr: 0x5848, symSize: 0x20 }
- { offsetInCU: 0x6EE1, offset: 0x375FC, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x38D4, symBinAddr: 0x5868, symSize: 0x10 }
- { offsetInCU: 0x6F24, offset: 0x3763F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x38E4, symBinAddr: 0x5878, symSize: 0xC8 }
- { offsetInCU: 0x6F8C, offset: 0x376A7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x39AC, symBinAddr: 0x5940, symSize: 0xE0 }
- { offsetInCU: 0x6FE2, offset: 0x376FD, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3A8C, symBinAddr: 0x5A20, symSize: 0x78 }
- { offsetInCU: 0x704F, offset: 0x3776A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3B6C, symBinAddr: 0x5B00, symSize: 0x1C0 }
- { offsetInCU: 0x7179, offset: 0x37894, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3D2C, symBinAddr: 0x5CC0, symSize: 0x54 }
- { offsetInCU: 0x724A, offset: 0x37965, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3D80, symBinAddr: 0x5D14, symSize: 0x260 }
- { offsetInCU: 0x740A, offset: 0x37B25, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4080, symBinAddr: 0x6014, symSize: 0x1B0 }
- { offsetInCU: 0x748B, offset: 0x37BA6, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4230, symBinAddr: 0x61C4, symSize: 0x1C8 }
- { offsetInCU: 0x7525, offset: 0x37C40, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x43F8, symBinAddr: 0x638C, symSize: 0x358 }
- { offsetInCU: 0x76A4, offset: 0x37DBF, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4750, symBinAddr: 0x66E4, symSize: 0x344 }
- { offsetInCU: 0x77B7, offset: 0x37ED2, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4A94, symBinAddr: 0x6A28, symSize: 0x154 }
- { offsetInCU: 0x79C2, offset: 0x380DD, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4BE8, symBinAddr: 0x6B7C, symSize: 0x180 }
- { offsetInCU: 0x7BD8, offset: 0x382F3, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4D68, symBinAddr: 0x6CFC, symSize: 0x190 }
- { offsetInCU: 0x7C3C, offset: 0x38357, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4EF8, symBinAddr: 0x6E8C, symSize: 0x298 }
- { offsetInCU: 0x7E42, offset: 0x3855D, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5190, symBinAddr: 0x7124, symSize: 0x33C }
- { offsetInCU: 0x8072, offset: 0x3878D, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x54CC, symBinAddr: 0x7460, symSize: 0x1C }
- { offsetInCU: 0x808A, offset: 0x387A5, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x54E8, symBinAddr: 0x747C, symSize: 0x1C }
- { offsetInCU: 0x80D9, offset: 0x387F4, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5504, symBinAddr: 0x7498, symSize: 0x110 }
- { offsetInCU: 0x8231, offset: 0x3894C, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5614, symBinAddr: 0x75A8, symSize: 0xFC }
- { offsetInCU: 0x84A2, offset: 0x38BBD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x62EC, symBinAddr: 0x8280, symSize: 0x44 }
- { offsetInCU: 0x84B6, offset: 0x38BD1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6330, symBinAddr: 0x82C4, symSize: 0x44 }
- { offsetInCU: 0x84CA, offset: 0x38BE5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6374, symBinAddr: 0x8308, symSize: 0x34 }
- { offsetInCU: 0x84DE, offset: 0x38BF9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x63A8, symBinAddr: 0x833C, symSize: 0x28 }
- { offsetInCU: 0x84F2, offset: 0x38C0D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x63D0, symBinAddr: 0x8364, symSize: 0x34 }
- { offsetInCU: 0x8506, offset: 0x38C21, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6404, symBinAddr: 0x8398, symSize: 0x5C }
- { offsetInCU: 0x851A, offset: 0x38C35, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6460, symBinAddr: 0x83F4, symSize: 0xC }
- { offsetInCU: 0x852E, offset: 0x38C49, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x646C, symBinAddr: 0x8400, symSize: 0x44 }
- { offsetInCU: 0x8542, offset: 0x38C5D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x64B0, symBinAddr: 0x8444, symSize: 0x48 }
- { offsetInCU: 0x8556, offset: 0x38C71, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x64F8, symBinAddr: 0x848C, symSize: 0x3C }
- { offsetInCU: 0x856A, offset: 0x38C85, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6534, symBinAddr: 0x84C8, symSize: 0x10 }
- { offsetInCU: 0x857E, offset: 0x38C99, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6544, symBinAddr: 0x84D8, symSize: 0x40 }
- { offsetInCU: 0x8642, offset: 0x38D5D, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6684, symBinAddr: 0x8618, symSize: 0x178 }
- { offsetInCU: 0x8713, offset: 0x38E2E, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x67FC, symBinAddr: 0x8790, symSize: 0xC0 }
- { offsetInCU: 0x8922, offset: 0x3903D, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x548, symBinAddr: 0x24DC, symSize: 0x4C }
- { offsetInCU: 0x893E, offset: 0x39059, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x594, symBinAddr: 0x2528, symSize: 0x30 }
- { offsetInCU: 0x89E8, offset: 0x39103, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5C4, symBinAddr: 0x2558, symSize: 0xE4 }
- { offsetInCU: 0x8F60, offset: 0x3967B, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x60F4, symBinAddr: 0x8088, symSize: 0x100 }
- { offsetInCU: 0x9091, offset: 0x397AC, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x61F4, symBinAddr: 0x8188, symSize: 0xF8 }
- { offsetInCU: 0x91DE, offset: 0x398F9, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6584, symBinAddr: 0x8518, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x39C38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0x8C6C, symSize: 0x1C }
- { offsetInCU: 0x4B, offset: 0x39C5C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0x8C6C, symSize: 0x1C }
- { offsetInCU: 0x9A, offset: 0x39CAB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x1C, symBinAddr: 0x8C88, symSize: 0xF0 }
- { offsetInCU: 0x1DF, offset: 0x39DF0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x10C, symBinAddr: 0x8D78, symSize: 0xC }
- { offsetInCU: 0x1FD, offset: 0x39E0E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x118, symBinAddr: 0x8D84, symSize: 0xC }
- { offsetInCU: 0x21B, offset: 0x39E2C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x124, symBinAddr: 0x8D90, symSize: 0xC }
- { offsetInCU: 0x239, offset: 0x39E4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x130, symBinAddr: 0x8D9C, symSize: 0xC }
- { offsetInCU: 0x277, offset: 0x39E88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x13C, symBinAddr: 0x8DA8, symSize: 0x10 }
- { offsetInCU: 0x2A5, offset: 0x39EB6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x14C, symBinAddr: 0x8DB8, symSize: 0x4 }
- { offsetInCU: 0x2D0, offset: 0x39EE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x150, symBinAddr: 0x8DBC, symSize: 0x4 }
- { offsetInCU: 0x2E4, offset: 0x39EF5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0x8DC0, symSize: 0x4 }
- { offsetInCU: 0x30F, offset: 0x39F20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0x8DC4, symSize: 0x4 }
- { offsetInCU: 0x32F, offset: 0x39F40, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0x8DC4, symSize: 0x4 }
- { offsetInCU: 0x340, offset: 0x39F51, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x15C, symBinAddr: 0x8DC8, symSize: 0x58 }
- { offsetInCU: 0x3B4, offset: 0x39FC5, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x1B4, symBinAddr: 0x8E20, symSize: 0xC }
- { offsetInCU: 0x3C8, offset: 0x39FD9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x1C4, symBinAddr: 0x8E2C, symSize: 0x44 }
- { offsetInCU: 0x3DC, offset: 0x39FED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x208, symBinAddr: 0x8E70, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x3A001, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x248, symBinAddr: 0x8EB0, symSize: 0x10 }
- { offsetInCU: 0x2B, offset: 0x3A10C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x8EC0, symSize: 0x1A4 }
- { offsetInCU: 0x4F, offset: 0x3A130, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xB3D0, symBinAddr: 0x19B50, symSize: 0x0 }
- { offsetInCU: 0x1A2, offset: 0x3A283, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x8EC0, symSize: 0x1A4 }
- { offsetInCU: 0x582, offset: 0x3A663, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x1A4, symBinAddr: 0x9064, symSize: 0x78 }
- { offsetInCU: 0x5C0, offset: 0x3A6A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x21C, symBinAddr: 0x90DC, symSize: 0x14 }
- { offsetInCU: 0x5DB, offset: 0x3A6BC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x230, symBinAddr: 0x90F0, symSize: 0x30 }
- { offsetInCU: 0x61F, offset: 0x3A700, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x260, symBinAddr: 0x9120, symSize: 0x54 }
- { offsetInCU: 0x683, offset: 0x3A764, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B4, symBinAddr: 0x9174, symSize: 0x17C }
- { offsetInCU: 0x99E, offset: 0x3AA7F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x430, symBinAddr: 0x92F0, symSize: 0x29C }
- { offsetInCU: 0xCE8, offset: 0x3ADC9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6CC, symBinAddr: 0x958C, symSize: 0xA0 }
- { offsetInCU: 0xDF9, offset: 0x3AEDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x76C, symBinAddr: 0x962C, symSize: 0x10C }
- { offsetInCU: 0x1033, offset: 0x3B114, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x878, symBinAddr: 0x9738, symSize: 0x3C }
- { offsetInCU: 0x1143, offset: 0x3B224, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x8B4, symBinAddr: 0x9774, symSize: 0x11C }
- { offsetInCU: 0x12BB, offset: 0x3B39C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x9D0, symBinAddr: 0x9890, symSize: 0x1E4 }
- { offsetInCU: 0x1477, offset: 0x3B558, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBB4, symBinAddr: 0x9A74, symSize: 0x8 }
- { offsetInCU: 0x148B, offset: 0x3B56C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBBC, symBinAddr: 0x9A7C, symSize: 0x8 }
- { offsetInCU: 0x14BD, offset: 0x3B59E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBC4, symBinAddr: 0x9A84, symSize: 0x78 }
- { offsetInCU: 0x150A, offset: 0x3B5EB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC3C, symBinAddr: 0x9AFC, symSize: 0x14 }
- { offsetInCU: 0x1542, offset: 0x3B623, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC50, symBinAddr: 0x9B10, symSize: 0x4 }
- { offsetInCU: 0x155E, offset: 0x3B63F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC54, symBinAddr: 0x9B14, symSize: 0x14 }
- { offsetInCU: 0x157A, offset: 0x3B65B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC68, symBinAddr: 0x9B28, symSize: 0x14 }
- { offsetInCU: 0x1596, offset: 0x3B677, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xC7C, symBinAddr: 0x9B3C, symSize: 0x4 }
- { offsetInCU: 0x15B2, offset: 0x3B693, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xC80, symBinAddr: 0x9B40, symSize: 0x4 }
- { offsetInCU: 0x15CE, offset: 0x3B6AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xC84, symBinAddr: 0x9B44, symSize: 0x18 }
- { offsetInCU: 0x15EA, offset: 0x3B6CB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xC9C, symBinAddr: 0x9B5C, symSize: 0x14 }
- { offsetInCU: 0x161E, offset: 0x3B6FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0x9B70, symSize: 0x8 }
- { offsetInCU: 0x163E, offset: 0x3B71F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0x9B70, symSize: 0x8 }
- { offsetInCU: 0x1661, offset: 0x3B742, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0x9B78, symSize: 0x8 }
- { offsetInCU: 0x1681, offset: 0x3B762, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0x9B78, symSize: 0x8 }
- { offsetInCU: 0x1693, offset: 0x3B774, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xCC0, symBinAddr: 0x9B80, symSize: 0x144 }
- { offsetInCU: 0x1895, offset: 0x3B976, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE04, symBinAddr: 0x9CC4, symSize: 0x220 }
- { offsetInCU: 0x1BFD, offset: 0x3BCDE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1024, symBinAddr: 0x9EE4, symSize: 0xB8 }
- { offsetInCU: 0x1E82, offset: 0x3BF63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11A4, symBinAddr: 0x9F9C, symSize: 0x34 }
- { offsetInCU: 0x1E96, offset: 0x3BF77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11D8, symBinAddr: 0x9FD0, symSize: 0x28 }
- { offsetInCU: 0x1EAA, offset: 0x3BF8B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1200, symBinAddr: 0x9FF8, symSize: 0x34 }
- { offsetInCU: 0x1EBE, offset: 0x3BF9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1234, symBinAddr: 0xA02C, symSize: 0x5C }
- { offsetInCU: 0x1ED2, offset: 0x3BFB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x129C, symBinAddr: 0xA088, symSize: 0x44 }
- { offsetInCU: 0x1EE6, offset: 0x3BFC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12E0, symBinAddr: 0xA0CC, symSize: 0x48 }
- { offsetInCU: 0x1EFA, offset: 0x3BFDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1328, symBinAddr: 0xA114, symSize: 0x3C }
- { offsetInCU: 0x1F0E, offset: 0x3BFEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1364, symBinAddr: 0xA150, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x3C377, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xA1D8, symSize: 0x68 }
- { offsetInCU: 0x7A, offset: 0x3C3A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x88, symBinAddr: 0xA260, symSize: 0x24 }
- { offsetInCU: 0x97, offset: 0x3C3C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xAC, symBinAddr: 0xA284, symSize: 0xE4 }
- { offsetInCU: 0x1C2, offset: 0x3C4EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x190, symBinAddr: 0xA368, symSize: 0x28 }
- { offsetInCU: 0x252, offset: 0x3C57E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1B8, symBinAddr: 0xA390, symSize: 0x10C }
- { offsetInCU: 0x3DB, offset: 0x3C707, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2C4, symBinAddr: 0xA49C, symSize: 0x70 }
- { offsetInCU: 0x49A, offset: 0x3C7C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x334, symBinAddr: 0xA50C, symSize: 0xFC }
- { offsetInCU: 0x58F, offset: 0x3C8BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x430, symBinAddr: 0xA608, symSize: 0x40 }
- { offsetInCU: 0x601, offset: 0x3C92D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x470, symBinAddr: 0xA648, symSize: 0x2C }
- { offsetInCU: 0x630, offset: 0x3C95C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x49C, symBinAddr: 0xA674, symSize: 0xC }
- { offsetInCU: 0x693, offset: 0x3C9BF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x4A8, symBinAddr: 0xA680, symSize: 0x98 }
- { offsetInCU: 0x6C8, offset: 0x3C9F4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x540, symBinAddr: 0xA718, symSize: 0xC }
- { offsetInCU: 0x738, offset: 0x3CA64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x6F4, symBinAddr: 0xA8CC, symSize: 0x2C }
- { offsetInCU: 0x77C, offset: 0x3CAA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x68, symBinAddr: 0xA240, symSize: 0x20 }
- { offsetInCU: 0x883, offset: 0x3CBAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x54C, symBinAddr: 0xA724, symSize: 0x6C }
- { offsetInCU: 0x8B6, offset: 0x3CBE2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x5B8, symBinAddr: 0xA790, symSize: 0x48 }
- { offsetInCU: 0x904, offset: 0x3CC30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x624, symBinAddr: 0xA7FC, symSize: 0x88 }
- { offsetInCU: 0x934, offset: 0x3CC60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x6AC, symBinAddr: 0xA884, symSize: 0x48 }
- { offsetInCU: 0x9FE, offset: 0x3CD2A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x82C, symBinAddr: 0xAA04, symSize: 0xFC }
- { offsetInCU: 0xBA1, offset: 0x3CECD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x968, symBinAddr: 0xAB00, symSize: 0x110 }
- { offsetInCU: 0xD44, offset: 0x3D070, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xA78, symBinAddr: 0xAC10, symSize: 0xFC }
- { offsetInCU: 0xEF2, offset: 0x3D21E, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xB74, symBinAddr: 0xAD0C, symSize: 0x128 }
- { offsetInCU: 0x27, offset: 0x3D541, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xAFB4, symSize: 0x4 }
- { offsetInCU: 0x3F, offset: 0x3D559, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x10, symBinAddr: 0xAFC4, symSize: 0x48 }
- { offsetInCU: 0x53, offset: 0x3D56D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0x58, symBinAddr: 0xB00C, symSize: 0x18 }
- { offsetInCU: 0x67, offset: 0x3D581, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0x70, symBinAddr: 0xB024, symSize: 0x48 }
- { offsetInCU: 0x7B, offset: 0x3D595, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0xB8, symBinAddr: 0xB06C, symSize: 0xA0 }
- { offsetInCU: 0x8F, offset: 0x3D5A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x164, symBinAddr: 0xB10C, symSize: 0x60 }
- { offsetInCU: 0xA3, offset: 0x3D5BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x1C4, symBinAddr: 0xB16C, symSize: 0x58 }
- { offsetInCU: 0xB7, offset: 0x3D5D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x21C, symBinAddr: 0xB1C4, symSize: 0x54 }
- { offsetInCU: 0xCB, offset: 0x3D5E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x270, symBinAddr: 0xB218, symSize: 0x18 }
- { offsetInCU: 0xDF, offset: 0x3D5F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x288, symBinAddr: 0xB230, symSize: 0x4 }
- { offsetInCU: 0xF3, offset: 0x3D60D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x28C, symBinAddr: 0xB234, symSize: 0x20 }
- { offsetInCU: 0x107, offset: 0x3D621, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x2AC, symBinAddr: 0xB254, symSize: 0x10 }
- { offsetInCU: 0x12C, offset: 0x3D646, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xAFB4, symSize: 0x4 }
- { offsetInCU: 0x148, offset: 0x3D662, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x4, symBinAddr: 0xAFB8, symSize: 0x4 }
- { offsetInCU: 0x164, offset: 0x3D67E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x8, symBinAddr: 0xAFBC, symSize: 0x4 }
- { offsetInCU: 0x180, offset: 0x3D69A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0xC, symBinAddr: 0xAFC0, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x3D72E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xB264, symSize: 0x28 }
- { offsetInCU: 0x52, offset: 0x3D759, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xB264, symSize: 0x28 }
- { offsetInCU: 0xC5, offset: 0x3D7CC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x28, symBinAddr: 0xB28C, symSize: 0x1B4 }
- { offsetInCU: 0x3A6, offset: 0x3DAAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x1DC, symBinAddr: 0xB440, symSize: 0x70 }
- { offsetInCU: 0x4A7, offset: 0x3DBAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x24C, symBinAddr: 0xB4B0, symSize: 0x104 }
- { offsetInCU: 0x5DD, offset: 0x3DCE4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x350, symBinAddr: 0xB5B4, symSize: 0x4C }
- { offsetInCU: 0x6C4, offset: 0x3DDCB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x3C0, symBinAddr: 0xB624, symSize: 0x9C }
- { offsetInCU: 0x71B, offset: 0x3DE22, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x45C, symBinAddr: 0xB6C0, symSize: 0x6C }
- { offsetInCU: 0x76C, offset: 0x3DE73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x4C8, symBinAddr: 0xB72C, symSize: 0x24 }
- { offsetInCU: 0x7CB, offset: 0x3DED2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x4EC, symBinAddr: 0xB750, symSize: 0x2C }
- { offsetInCU: 0x9ED, offset: 0x3E0F4, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x39C, symBinAddr: 0xB600, symSize: 0x24 }
- { offsetInCU: 0xA98, offset: 0x3E19F, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x518, symBinAddr: 0xB77C, symSize: 0x88 }
- { offsetInCU: 0xB39, offset: 0x3E240, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x5A0, symBinAddr: 0xB804, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x3E3EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xB824, symSize: 0x48 }
- { offsetInCU: 0x6C, offset: 0x3E431, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xB824, symSize: 0x48 }
- { offsetInCU: 0xDB, offset: 0x3E4A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x88, symBinAddr: 0xB86C, symSize: 0x14 }
- { offsetInCU: 0x10E, offset: 0x3E4D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x9C, symBinAddr: 0xB880, symSize: 0x28 }
- { offsetInCU: 0x1A4, offset: 0x3E569, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xC4, symBinAddr: 0xB8A8, symSize: 0x44 }
- { offsetInCU: 0x29E, offset: 0x3E663, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xB8EC, symSize: 0x14 }
- { offsetInCU: 0x2BE, offset: 0x3E683, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xB8EC, symSize: 0x14 }
- { offsetInCU: 0x2FE, offset: 0x3E6C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x11C, symBinAddr: 0xB900, symSize: 0x44 }
- { offsetInCU: 0x3E1, offset: 0x3E7A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x160, symBinAddr: 0xB944, symSize: 0x28 }
- { offsetInCU: 0x46D, offset: 0x3E832, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x2A4, symBinAddr: 0xBA88, symSize: 0x58 }
- { offsetInCU: 0x509, offset: 0x3E8CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1C8, symBinAddr: 0xB9AC, symSize: 0x4 }
- { offsetInCU: 0x51D, offset: 0x3E8E2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1CC, symBinAddr: 0xB9B0, symSize: 0x44 }
- { offsetInCU: 0x531, offset: 0x3E8F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x210, symBinAddr: 0xB9F4, symSize: 0x4 }
- { offsetInCU: 0x545, offset: 0x3E90A, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x214, symBinAddr: 0xB9F8, symSize: 0x4C }
- { offsetInCU: 0x559, offset: 0x3E91E, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x260, symBinAddr: 0xBA44, symSize: 0x44 }
- { offsetInCU: 0x56D, offset: 0x3E932, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x30C, symBinAddr: 0xBAE0, symSize: 0x90 }
- { offsetInCU: 0x581, offset: 0x3E946, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x39C, symBinAddr: 0xBB70, symSize: 0xBC }
- { offsetInCU: 0x595, offset: 0x3E95A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x458, symBinAddr: 0xBC2C, symSize: 0x8 }
- { offsetInCU: 0x5A9, offset: 0x3E96E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x460, symBinAddr: 0xBC34, symSize: 0x4 }
- { offsetInCU: 0x5BD, offset: 0x3E982, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x464, symBinAddr: 0xBC38, symSize: 0x8 }
- { offsetInCU: 0x5D1, offset: 0x3E996, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x46C, symBinAddr: 0xBC40, symSize: 0x10 }
- { offsetInCU: 0x63E, offset: 0x3EA03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x188, symBinAddr: 0xB96C, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x3EB43, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xBC50, symSize: 0x68 }
- { offsetInCU: 0xA6, offset: 0x3EBBE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xBC50, symSize: 0x68 }
- { offsetInCU: 0x2B0, offset: 0x3EDC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x68, symBinAddr: 0xBCB8, symSize: 0x1C0 }
- { offsetInCU: 0x583, offset: 0x3F09B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x228, symBinAddr: 0xBE78, symSize: 0xD0 }
- { offsetInCU: 0x7F1, offset: 0x3F309, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2F8, symBinAddr: 0xBF48, symSize: 0x8 }
- { offsetInCU: 0x80F, offset: 0x3F327, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x300, symBinAddr: 0xBF50, symSize: 0x8 }
- { offsetInCU: 0x82D, offset: 0x3F345, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x308, symBinAddr: 0xBF58, symSize: 0x8 }
- { offsetInCU: 0x84B, offset: 0x3F363, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x310, symBinAddr: 0xBF60, symSize: 0xD0 }
- { offsetInCU: 0xA02, offset: 0x3F51A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x3E0, symBinAddr: 0xC030, symSize: 0x150 }
- { offsetInCU: 0xC18, offset: 0x3F730, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x530, symBinAddr: 0xC180, symSize: 0x14C }
- { offsetInCU: 0xE35, offset: 0x3F94D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x67C, symBinAddr: 0xC2CC, symSize: 0x28 }
- { offsetInCU: 0xE77, offset: 0x3F98F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x6A4, symBinAddr: 0xC2F4, symSize: 0x50 }
- { offsetInCU: 0xF03, offset: 0x3FA1B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x6F4, symBinAddr: 0xC344, symSize: 0x50 }
- { offsetInCU: 0xF92, offset: 0x3FAAA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x744, symBinAddr: 0xC394, symSize: 0x4 }
- { offsetInCU: 0xFC0, offset: 0x3FAD8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x794, symBinAddr: 0xC3E4, symSize: 0x28 }
- { offsetInCU: 0x125D, offset: 0x3FD75, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x7BC, symBinAddr: 0xC40C, symSize: 0x14 }
- { offsetInCU: 0x1295, offset: 0x3FDAD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x7D0, symBinAddr: 0xC420, symSize: 0x14 }
- { offsetInCU: 0x12CD, offset: 0x3FDE5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x7E4, symBinAddr: 0xC434, symSize: 0x14 }
- { offsetInCU: 0x1305, offset: 0x3FE1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x9B0, symBinAddr: 0xC600, symSize: 0x4 }
- { offsetInCU: 0x1319, offset: 0x3FE31, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x9B4, symBinAddr: 0xC604, symSize: 0x44 }
- { offsetInCU: 0x132D, offset: 0x3FE45, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x9F8, symBinAddr: 0xC648, symSize: 0x34 }
- { offsetInCU: 0x1341, offset: 0x3FE59, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0xA2C, symBinAddr: 0xC67C, symSize: 0x8 }
- { offsetInCU: 0x1355, offset: 0x3FE6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0xA34, symBinAddr: 0xC684, symSize: 0x34 }
- { offsetInCU: 0x1369, offset: 0x3FE81, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0xA68, symBinAddr: 0xC6B8, symSize: 0x48 }
- { offsetInCU: 0x137D, offset: 0x3FE95, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0xAB0, symBinAddr: 0xC700, symSize: 0x14 }
- { offsetInCU: 0x1391, offset: 0x3FEA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0xAC4, symBinAddr: 0xC714, symSize: 0x38 }
- { offsetInCU: 0x13A5, offset: 0x3FEBD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xAFC, symBinAddr: 0xC74C, symSize: 0x48 }
- { offsetInCU: 0x13B9, offset: 0x3FED1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xB44, symBinAddr: 0xC794, symSize: 0x40 }
- { offsetInCU: 0x13CD, offset: 0x3FEE5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xB84, symBinAddr: 0xC7D4, symSize: 0x10 }
- { offsetInCU: 0x1532, offset: 0x4004A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x748, symBinAddr: 0xC398, symSize: 0x4C }
- { offsetInCU: 0x1570, offset: 0x40088, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xC448, symSize: 0x98 }
- { offsetInCU: 0x1590, offset: 0x400A8, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xC448, symSize: 0x98 }
- { offsetInCU: 0x15A4, offset: 0x400BC, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xC448, symSize: 0x98 }
- { offsetInCU: 0x15B8, offset: 0x400D0, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0xC448, symSize: 0x98 }
- { offsetInCU: 0x1644, offset: 0x4015C, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x890, symBinAddr: 0xC4E0, symSize: 0x120 }
- { offsetInCU: 0x27, offset: 0x403A5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xC7E4, symSize: 0x14 }
- { offsetInCU: 0x46, offset: 0x403C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xC7E4, symSize: 0x14 }
- { offsetInCU: 0x85, offset: 0x40403, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x14, symBinAddr: 0xC7F8, symSize: 0xB4 }
- { offsetInCU: 0x176, offset: 0x404F4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xC8, symBinAddr: 0xC8AC, symSize: 0xC }
- { offsetInCU: 0x194, offset: 0x40512, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xD4, symBinAddr: 0xC8B8, symSize: 0xC }
- { offsetInCU: 0x1B2, offset: 0x40530, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0xE0, symBinAddr: 0xC8C4, symSize: 0x3C }
- { offsetInCU: 0x2E8, offset: 0x40666, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x11C, symBinAddr: 0xC900, symSize: 0x20 }
- { offsetInCU: 0x355, offset: 0x406D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x13C, symBinAddr: 0xC920, symSize: 0x5C }
- { offsetInCU: 0x4EB, offset: 0x40869, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x198, symBinAddr: 0xC97C, symSize: 0x4 }
- { offsetInCU: 0x516, offset: 0x40894, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x19C, symBinAddr: 0xC980, symSize: 0x5C }
- { offsetInCU: 0x6C9, offset: 0x40A47, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1F8, symBinAddr: 0xC9DC, symSize: 0x3C }
- { offsetInCU: 0x82D, offset: 0x40BAB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0xCA70, symSize: 0x20 }
- { offsetInCU: 0x84D, offset: 0x40BCB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0xCA70, symSize: 0x20 }
- { offsetInCU: 0x949, offset: 0x40CC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2AC, symBinAddr: 0xCA90, symSize: 0x4 }
- { offsetInCU: 0x95D, offset: 0x40CDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2B0, symBinAddr: 0xCA94, symSize: 0x44 }
- { offsetInCU: 0x971, offset: 0x40CEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x304, symBinAddr: 0xCAD8, symSize: 0x94 }
- { offsetInCU: 0x985, offset: 0x40D03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x398, symBinAddr: 0xCB6C, symSize: 0xBC }
- { offsetInCU: 0x999, offset: 0x40D17, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x454, symBinAddr: 0xCC28, symSize: 0x10 }
- { offsetInCU: 0xA44, offset: 0x40DC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x234, symBinAddr: 0xCA18, symSize: 0x58 }
- { offsetInCU: 0x27, offset: 0x40FC1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xCC38, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x40FE5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xCC38, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x41008, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0xCC4C, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x41028, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0xCC4C, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x41039, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x18, symBinAddr: 0xCC50, symSize: 0x118 }
- { offsetInCU: 0x1AE, offset: 0x41148, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x130, symBinAddr: 0xCD68, symSize: 0x30 }
- { offsetInCU: 0x1C2, offset: 0x4115C, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x164, symBinAddr: 0xCD98, symSize: 0x14 }
- { offsetInCU: 0x1D6, offset: 0x41170, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x178, symBinAddr: 0xCDAC, symSize: 0x48 }
- { offsetInCU: 0x1EA, offset: 0x41184, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x1C0, symBinAddr: 0xCDF4, symSize: 0x48 }
- { offsetInCU: 0x1FE, offset: 0x41198, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x208, symBinAddr: 0xCE3C, symSize: 0x18 }
- { offsetInCU: 0x212, offset: 0x411AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x220, symBinAddr: 0xCE54, symSize: 0x4 }
- { offsetInCU: 0x226, offset: 0x411C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x224, symBinAddr: 0xCE58, symSize: 0x1C }
- { offsetInCU: 0x23A, offset: 0x411D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x240, symBinAddr: 0xCE74, symSize: 0x10 }
- { offsetInCU: 0x25F, offset: 0x411F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x4, symBinAddr: 0xCC3C, symSize: 0x4 }
- { offsetInCU: 0x27B, offset: 0x41215, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x8, symBinAddr: 0xCC40, symSize: 0x4 }
- { offsetInCU: 0x297, offset: 0x41231, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0xC, symBinAddr: 0xCC44, symSize: 0x4 }
- { offsetInCU: 0x2B3, offset: 0x4124D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x10, symBinAddr: 0xCC48, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x412F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xCE84, symSize: 0x14 }
- { offsetInCU: 0x4B, offset: 0x4131A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xCE84, symSize: 0x14 }
- { offsetInCU: 0x7E, offset: 0x4134D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x14, symBinAddr: 0xCE98, symSize: 0x18 }
- { offsetInCU: 0xA9, offset: 0x41378, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x2C, symBinAddr: 0xCEB0, symSize: 0x28 }
- { offsetInCU: 0x13F, offset: 0x4140E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x54, symBinAddr: 0xCED8, symSize: 0x44 }
- { offsetInCU: 0x239, offset: 0x41508, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0xCF1C, symSize: 0x14 }
- { offsetInCU: 0x259, offset: 0x41528, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0xCF1C, symSize: 0x14 }
- { offsetInCU: 0x299, offset: 0x41568, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xAC, symBinAddr: 0xCF30, symSize: 0x44 }
- { offsetInCU: 0x37C, offset: 0x4164B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF0, symBinAddr: 0xCF74, symSize: 0x28 }
- { offsetInCU: 0x405, offset: 0x416D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x158, symBinAddr: 0xCFDC, symSize: 0x4 }
- { offsetInCU: 0x419, offset: 0x416E8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x15C, symBinAddr: 0xCFE0, symSize: 0x44 }
- { offsetInCU: 0x42D, offset: 0x416FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1B0, symBinAddr: 0xD024, symSize: 0x90 }
- { offsetInCU: 0x441, offset: 0x41710, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x240, symBinAddr: 0xD0B4, symSize: 0xBC }
- { offsetInCU: 0x455, offset: 0x41724, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2FC, symBinAddr: 0xD170, symSize: 0x8 }
- { offsetInCU: 0x469, offset: 0x41738, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x304, symBinAddr: 0xD178, symSize: 0x4 }
- { offsetInCU: 0x47D, offset: 0x4174C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x308, symBinAddr: 0xD17C, symSize: 0x8 }
- { offsetInCU: 0x491, offset: 0x41760, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x310, symBinAddr: 0xD184, symSize: 0x10 }
- { offsetInCU: 0x4E9, offset: 0x417B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x118, symBinAddr: 0xCF9C, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x418E2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD194, symSize: 0x6C }
- { offsetInCU: 0xAC, offset: 0x41967, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD194, symSize: 0x6C }
- { offsetInCU: 0xF0, offset: 0x419AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x6C, symBinAddr: 0xD200, symSize: 0x24 }
- { offsetInCU: 0x155, offset: 0x41A10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0xD224, symSize: 0x9C }
- { offsetInCU: 0x1BD, offset: 0x41A78, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x12C, symBinAddr: 0xD2C0, symSize: 0x2C }
- { offsetInCU: 0x217, offset: 0x41AD2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x158, symBinAddr: 0xD2EC, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x41B95, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xD30C, symSize: 0x4 }
- { offsetInCU: 0x46, offset: 0x41BB4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0xD30C, symSize: 0x4 }
- { offsetInCU: 0x5A, offset: 0x41BC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x4, symBinAddr: 0xD310, symSize: 0x14 }
- { offsetInCU: 0xC1, offset: 0x41C2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x18, symBinAddr: 0xD324, symSize: 0xC }
- { offsetInCU: 0xDF, offset: 0x41C4D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x24, symBinAddr: 0xD330, symSize: 0x8 }
- { offsetInCU: 0xFD, offset: 0x41C6B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x2C, symBinAddr: 0xD338, symSize: 0x8 }
- { offsetInCU: 0x11B, offset: 0x41C89, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x34, symBinAddr: 0xD340, symSize: 0x8 }
- { offsetInCU: 0x139, offset: 0x41CA7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x3C, symBinAddr: 0xD348, symSize: 0x8 }
- { offsetInCU: 0x157, offset: 0x41CC5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x44, symBinAddr: 0xD350, symSize: 0x198 }
- { offsetInCU: 0x287, offset: 0x41DF5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1DC, symBinAddr: 0xD4E8, symSize: 0x4 }
- { offsetInCU: 0x2B2, offset: 0x41E20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0xD4EC, symSize: 0x4 }
- { offsetInCU: 0x2D2, offset: 0x41E40, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0xD4EC, symSize: 0x4 }
- { offsetInCU: 0x2E3, offset: 0x41E51, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1E4, symBinAddr: 0xD4F0, symSize: 0x48 }
- { offsetInCU: 0x316, offset: 0x41E84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x22C, symBinAddr: 0xD538, symSize: 0x30 }
- { offsetInCU: 0x32A, offset: 0x41E98, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x260, symBinAddr: 0xD568, symSize: 0x14 }
- { offsetInCU: 0x33E, offset: 0x41EAC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x274, symBinAddr: 0xD57C, symSize: 0x44 }
- { offsetInCU: 0x352, offset: 0x41EC0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x2B8, symBinAddr: 0xD5C0, symSize: 0x4C }
- { offsetInCU: 0x366, offset: 0x41ED4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x304, symBinAddr: 0xD60C, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x41FC5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0xD61C, symSize: 0xC }
- { offsetInCU: 0x4B, offset: 0x41FE9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0xD61C, symSize: 0xC }
- { offsetInCU: 0x66, offset: 0x42004, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0xC, symBinAddr: 0xD628, symSize: 0x18 }
- { offsetInCU: 0xB8, offset: 0x42056, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0xD74C, symSize: 0x8 }
- { offsetInCU: 0xD4, offset: 0x42072, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0xD754, symSize: 0x10 }
- { offsetInCU: 0xEC, offset: 0x4208A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0xD754, symSize: 0x10 }
- { offsetInCU: 0x109, offset: 0x420A7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x38, symBinAddr: 0xD654, symSize: 0x4 }
- { offsetInCU: 0x11D, offset: 0x420BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x3C, symBinAddr: 0xD658, symSize: 0x44 }
- { offsetInCU: 0x147, offset: 0x420E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x158, symBinAddr: 0xD764, symSize: 0x90 }
- { offsetInCU: 0x15B, offset: 0x420F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x1E8, symBinAddr: 0xD7F4, symSize: 0xBC }
- { offsetInCU: 0x16F, offset: 0x4210D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2A4, symBinAddr: 0xD8B0, symSize: 0x8 }
- { offsetInCU: 0x183, offset: 0x42121, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2AC, symBinAddr: 0xD8B8, symSize: 0x4 }
- { offsetInCU: 0x197, offset: 0x42135, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2B0, symBinAddr: 0xD8BC, symSize: 0x8 }
- { offsetInCU: 0x1AB, offset: 0x42149, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x2B8, symBinAddr: 0xD8C4, symSize: 0x10 }
- { offsetInCU: 0x1E5, offset: 0x42183, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x24, symBinAddr: 0xD640, symSize: 0x14 }
- { offsetInCU: 0x276, offset: 0x42214, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0xD69C, symSize: 0x44 }
- { offsetInCU: 0x34E, offset: 0x422EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC4, symBinAddr: 0xD6E0, symSize: 0x2C }
- { offsetInCU: 0x3CA, offset: 0x42368, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0xD70C, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x42506, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xBC, symBinAddr: 0xD990, symSize: 0x4C }
- { offsetInCU: 0xE0, offset: 0x4254F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x16C, symBinAddr: 0xDA40, symSize: 0x48 }
- { offsetInCU: 0xFF, offset: 0x4256E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1F8, symBinAddr: 0xDACC, symSize: 0x8 }
- { offsetInCU: 0x12C, offset: 0x4259B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x200, symBinAddr: 0xDAD4, symSize: 0x64 }
- { offsetInCU: 0x151, offset: 0x425C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x264, symBinAddr: 0xDB38, symSize: 0x464 }
- { offsetInCU: 0x553, offset: 0x429C2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x7B0, symBinAddr: 0xDFDC, symSize: 0x84 }
- { offsetInCU: 0x602, offset: 0x42A71, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x834, symBinAddr: 0xE060, symSize: 0x68 }
- { offsetInCU: 0x69B, offset: 0x42B0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x89C, symBinAddr: 0xE0C8, symSize: 0x1C }
- { offsetInCU: 0x6E0, offset: 0x42B4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x8B8, symBinAddr: 0xE0E4, symSize: 0x84 }
- { offsetInCU: 0x78F, offset: 0x42BFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0x93C, symBinAddr: 0xE168, symSize: 0x68 }
- { offsetInCU: 0x828, offset: 0x42C97, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0x9A4, symBinAddr: 0xE1D0, symSize: 0xC }
- { offsetInCU: 0x882, offset: 0x42CF1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0x9B0, symBinAddr: 0xE1DC, symSize: 0x1C }
- { offsetInCU: 0x8C7, offset: 0x42D36, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0x9CC, symBinAddr: 0xE1F8, symSize: 0x6C }
- { offsetInCU: 0x8EC, offset: 0x42D5B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xA38, symBinAddr: 0xE264, symSize: 0x2C4 }
- { offsetInCU: 0x9E9, offset: 0x42E58, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xCFC, symBinAddr: 0xE528, symSize: 0xD4 }
- { offsetInCU: 0xB14, offset: 0x42F83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xDD0, symBinAddr: 0xE5FC, symSize: 0xD4 }
- { offsetInCU: 0xC3F, offset: 0x430AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0xF58, symBinAddr: 0xE784, symSize: 0xD4 }
- { offsetInCU: 0xD6A, offset: 0x431D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x108C, symBinAddr: 0xE8B8, symSize: 0xD4 }
- { offsetInCU: 0xE95, offset: 0x43304, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x1160, symBinAddr: 0xE98C, symSize: 0xD4 }
- { offsetInCU: 0xFC0, offset: 0x4342F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x1234, symBinAddr: 0xEA60, symSize: 0xD4 }
- { offsetInCU: 0x10EB, offset: 0x4355A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x1308, symBinAddr: 0xEB34, symSize: 0xD4 }
- { offsetInCU: 0x1216, offset: 0x43685, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x13DC, symBinAddr: 0xEC08, symSize: 0xD4 }
- { offsetInCU: 0x135F, offset: 0x437CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x14B0, symBinAddr: 0xECDC, symSize: 0xC8 }
- { offsetInCU: 0x150C, offset: 0x4397B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1578, symBinAddr: 0xEDA4, symSize: 0x28 }
- { offsetInCU: 0x1914, offset: 0x43D83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x15A0, symBinAddr: 0xEDCC, symSize: 0x9E8 }
- { offsetInCU: 0x267D, offset: 0x44AEC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x1F88, symBinAddr: 0xF7B4, symSize: 0x60 }
- { offsetInCU: 0x27B0, offset: 0x44C1F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x1FE8, symBinAddr: 0xF814, symSize: 0x220 }
- { offsetInCU: 0x2AB9, offset: 0x44F28, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2208, symBinAddr: 0xFA34, symSize: 0x70 }
- { offsetInCU: 0x2BB2, offset: 0x45021, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2278, symBinAddr: 0xFAA4, symSize: 0x10C }
- { offsetInCU: 0x2CE1, offset: 0x45150, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x2384, symBinAddr: 0xFBB0, symSize: 0x5C }
- { offsetInCU: 0x2D8F, offset: 0x451FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x23E0, symBinAddr: 0xFC0C, symSize: 0x30 }
- { offsetInCU: 0x2DAC, offset: 0x4521B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2410, symBinAddr: 0xFC3C, symSize: 0x18 }
- { offsetInCU: 0x2E63, offset: 0x452D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2428, symBinAddr: 0xFC54, symSize: 0x348 }
- { offsetInCU: 0x3351, offset: 0x457C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2770, symBinAddr: 0xFF9C, symSize: 0x60 }
- { offsetInCU: 0x33ED, offset: 0x4585C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x27D0, symBinAddr: 0xFFFC, symSize: 0x210 }
- { offsetInCU: 0x3666, offset: 0x45AD5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x29E0, symBinAddr: 0x1020C, symSize: 0x70 }
- { offsetInCU: 0x370F, offset: 0x45B7E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x2A50, symBinAddr: 0x1027C, symSize: 0x104 }
- { offsetInCU: 0x37EF, offset: 0x45C5E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x2B54, symBinAddr: 0x10380, symSize: 0x5C }
- { offsetInCU: 0x383E, offset: 0x45CAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x2BB0, symBinAddr: 0x103DC, symSize: 0x6C }
- { offsetInCU: 0x386B, offset: 0x45CDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x2C1C, symBinAddr: 0x10448, symSize: 0x1C }
- { offsetInCU: 0x3899, offset: 0x45D08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0xD8D4, symSize: 0x50 }
- { offsetInCU: 0x38CF, offset: 0x45D3E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x50, symBinAddr: 0xD924, symSize: 0x6C }
- { offsetInCU: 0x390F, offset: 0x45D7E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0x108, symBinAddr: 0xD9DC, symSize: 0x64 }
- { offsetInCU: 0x3951, offset: 0x45DC0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x1B4, symBinAddr: 0xDA88, symSize: 0x44 }
- { offsetInCU: 0x3A57, offset: 0x45EC6, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x730, symBinAddr: 0xDF9C, symSize: 0x20 }
- { offsetInCU: 0x3A6B, offset: 0x45EDA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x750, symBinAddr: 0xDFBC, symSize: 0x20 }
- { offsetInCU: 0x3B93, offset: 0x46002, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0xEA4, symBinAddr: 0xE6D0, symSize: 0x6C }
- { offsetInCU: 0x3BC6, offset: 0x46035, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0xF10, symBinAddr: 0xE73C, symSize: 0x48 }
- { offsetInCU: 0x3C82, offset: 0x460F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x102C, symBinAddr: 0xE858, symSize: 0x60 }
- { offsetInCU: 0x40E5, offset: 0x46554, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x2C38, symBinAddr: 0x10464, symSize: 0x60 }
- { offsetInCU: 0x4115, offset: 0x46584, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x2D44, symBinAddr: 0x104E8, symSize: 0x60 }
- { offsetInCU: 0x4145, offset: 0x465B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x2DA4, symBinAddr: 0x10548, symSize: 0x88 }
- { offsetInCU: 0x4179, offset: 0x465E8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x2E2C, symBinAddr: 0x105D0, symSize: 0x20 }
- { offsetInCU: 0x41A9, offset: 0x46618, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x2E4C, symBinAddr: 0x105F0, symSize: 0x88 }
- { offsetInCU: 0x41D9, offset: 0x46648, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x2ED4, symBinAddr: 0x10678, symSize: 0x80 }
- { offsetInCU: 0x4209, offset: 0x46678, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x2F54, symBinAddr: 0x106F8, symSize: 0x48 }
- { offsetInCU: 0x4265, offset: 0x466D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x2F9C, symBinAddr: 0x10740, symSize: 0x24 }
- { offsetInCU: 0x4299, offset: 0x46708, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x2FC0, symBinAddr: 0x10764, symSize: 0x24 }
- { offsetInCU: 0x42CD, offset: 0x4673C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x2FE4, symBinAddr: 0x10788, symSize: 0x28 }
- { offsetInCU: 0x4301, offset: 0x46770, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x300C, symBinAddr: 0x107B0, symSize: 0x28 }
- { offsetInCU: 0x432A, offset: 0x46799, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3034, symBinAddr: 0x107D8, symSize: 0x28 }
- { offsetInCU: 0x433E, offset: 0x467AD, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3308, symBinAddr: 0x10AAC, symSize: 0x168 }
...

@ -0,0 +1,486 @@
---
triple: 'x86_64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x3013C, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x14FA0, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x30171, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x14FD8, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x301AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3C20, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x301D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3C20, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x301F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x20, symBinAddr: 0x3C40, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x30226, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x140, symBinAddr: 0x3D60, symSize: 0x40 }
- { offsetInCU: 0xE5, offset: 0x3026C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x10, symBinAddr: 0x3C30, symSize: 0x10 }
- { offsetInCU: 0x114, offset: 0x3029B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x3C50, symSize: 0x20 }
- { offsetInCU: 0x1AA, offset: 0x30331, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x3C70, symSize: 0x40 }
- { offsetInCU: 0x2A5, offset: 0x3042C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x3CB0, symSize: 0x10 }
- { offsetInCU: 0x2FB, offset: 0x30482, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x3CC0, symSize: 0x40 }
- { offsetInCU: 0x3DF, offset: 0x30566, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x3D00, symSize: 0x20 }
- { offsetInCU: 0x468, offset: 0x305EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x180, symBinAddr: 0x3DA0, symSize: 0x10 }
- { offsetInCU: 0x47C, offset: 0x30603, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x190, symBinAddr: 0x3DB0, symSize: 0x30 }
- { offsetInCU: 0x490, offset: 0x30617, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1C0, symBinAddr: 0x3DE0, symSize: 0x10 }
- { offsetInCU: 0x4A4, offset: 0x3062B, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x1D0, symBinAddr: 0x3DF0, symSize: 0x10 }
- { offsetInCU: 0x4B8, offset: 0x3063F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x1E0, symBinAddr: 0x3E00, symSize: 0xB0 }
- { offsetInCU: 0x4CC, offset: 0x30653, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x290, symBinAddr: 0x3EB0, symSize: 0xE0 }
- { offsetInCU: 0x4E0, offset: 0x30667, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x370, symBinAddr: 0x3F90, symSize: 0x20 }
- { offsetInCU: 0x4F4, offset: 0x3067B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x390, symBinAddr: 0x3FB0, symSize: 0x10 }
- { offsetInCU: 0x508, offset: 0x3068F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x3A0, symBinAddr: 0x3FC0, symSize: 0x30 }
- { offsetInCU: 0x51C, offset: 0x306A3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3D0, symBinAddr: 0x3FF0, symSize: 0x10 }
- { offsetInCU: 0x530, offset: 0x306B7, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3E0, symBinAddr: 0x4000, symSize: 0x10 }
- { offsetInCU: 0x544, offset: 0x306CB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3F0, symBinAddr: 0x4010, symSize: 0x80 }
- { offsetInCU: 0x558, offset: 0x306DF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x470, symBinAddr: 0x4090, symSize: 0xD0 }
- { offsetInCU: 0x56C, offset: 0x306F3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x540, symBinAddr: 0x4160, symSize: 0x10 }
- { offsetInCU: 0x580, offset: 0x30707, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x550, symBinAddr: 0x4170, symSize: 0x10 }
- { offsetInCU: 0x594, offset: 0x3071B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x560, symBinAddr: 0x4180, symSize: 0x10 }
- { offsetInCU: 0x5A8, offset: 0x3072F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x570, symBinAddr: 0x4190, symSize: 0xA }
- { offsetInCU: 0x622, offset: 0x307A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x3D20, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x308ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x41A0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x30911, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x41A0, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x30934, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x20, symBinAddr: 0x41C0, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x30965, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x140, symBinAddr: 0x42E0, symSize: 0x60 }
- { offsetInCU: 0x113, offset: 0x309D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x10, symBinAddr: 0x41B0, symSize: 0x10 }
- { offsetInCU: 0x142, offset: 0x30A08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x41D0, symSize: 0x20 }
- { offsetInCU: 0x1D8, offset: 0x30A9E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x41F0, symSize: 0x40 }
- { offsetInCU: 0x2D3, offset: 0x30B99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x4230, symSize: 0x10 }
- { offsetInCU: 0x329, offset: 0x30BEF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x4240, symSize: 0x40 }
- { offsetInCU: 0x40D, offset: 0x30CD3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x4280, symSize: 0x20 }
- { offsetInCU: 0x496, offset: 0x30D5C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1A0, symBinAddr: 0x4340, symSize: 0x10 }
- { offsetInCU: 0x4AA, offset: 0x30D70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1B0, symBinAddr: 0x4350, symSize: 0x30 }
- { offsetInCU: 0x4BE, offset: 0x30D84, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x1E0, symBinAddr: 0x4380, symSize: 0x20 }
- { offsetInCU: 0x4D2, offset: 0x30D98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x210, symBinAddr: 0x43A0, symSize: 0x70 }
- { offsetInCU: 0x4E6, offset: 0x30DAC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x280, symBinAddr: 0x4410, symSize: 0x80 }
- { offsetInCU: 0x4FA, offset: 0x30DC0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x300, symBinAddr: 0x4490, symSize: 0x20 }
- { offsetInCU: 0x50E, offset: 0x30DD4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x320, symBinAddr: 0x44B0, symSize: 0x10 }
- { offsetInCU: 0x522, offset: 0x30DE8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x330, symBinAddr: 0x44C0, symSize: 0x20 }
- { offsetInCU: 0x536, offset: 0x30DFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x350, symBinAddr: 0x44E0, symSize: 0x10 }
- { offsetInCU: 0x54A, offset: 0x30E10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x370, symBinAddr: 0x44F0, symSize: 0x80 }
- { offsetInCU: 0x55E, offset: 0x30E24, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x3F0, symBinAddr: 0x4570, symSize: 0xD0 }
- { offsetInCU: 0x572, offset: 0x30E38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x4640, symSize: 0x10 }
- { offsetInCU: 0x586, offset: 0x30E4C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4D0, symBinAddr: 0x4650, symSize: 0x10 }
- { offsetInCU: 0x59A, offset: 0x30E60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4E0, symBinAddr: 0x4660, symSize: 0x10 }
- { offsetInCU: 0x5AE, offset: 0x30E74, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4F0, symBinAddr: 0x4670, symSize: 0xA }
- { offsetInCU: 0x60C, offset: 0x30ED2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x42A0, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x31002, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4680, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x31074, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4680, symSize: 0xD0 }
- { offsetInCU: 0x124, offset: 0x310FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x4750, symSize: 0xA0 }
- { offsetInCU: 0x1EB, offset: 0x311C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x4810, symSize: 0xA0 }
- { offsetInCU: 0x276, offset: 0x31251, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x48B0, symSize: 0x70 }
- { offsetInCU: 0x2F3, offset: 0x312CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x4920, symSize: 0x30 }
- { offsetInCU: 0x36F, offset: 0x3134A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2D0, symBinAddr: 0x4950, symSize: 0x30 }
- { offsetInCU: 0x3D4, offset: 0x313AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x300, symBinAddr: 0x4980, symSize: 0x50 }
- { offsetInCU: 0x461, offset: 0x3143C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x350, symBinAddr: 0x49D0, symSize: 0x110 }
- { offsetInCU: 0x5B9, offset: 0x31594, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x460, symBinAddr: 0x4AE0, symSize: 0x80 }
- { offsetInCU: 0x669, offset: 0x31644, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x4E0, symBinAddr: 0x4B60, symSize: 0x120 }
- { offsetInCU: 0x744, offset: 0x3171F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x600, symBinAddr: 0x4C80, symSize: 0x50 }
- { offsetInCU: 0x7A2, offset: 0x3177D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x670, symBinAddr: 0x4CF0, symSize: 0x30 }
- { offsetInCU: 0x7F3, offset: 0x317CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x6A0, symBinAddr: 0x4D20, symSize: 0x40 }
- { offsetInCU: 0x92F, offset: 0x3190A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x170, symBinAddr: 0x47F0, symSize: 0x20 }
- { offsetInCU: 0x9E8, offset: 0x319C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x650, symBinAddr: 0x4CD0, symSize: 0x20 }
- { offsetInCU: 0xA15, offset: 0x319F0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x6E0, symBinAddr: 0x4D60, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x31B95, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x2C500, symBinAddr: 0x1DB40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x31BAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x71E0, symBinAddr: 0x1C720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x31C1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x71E8, symBinAddr: 0x1C728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x31C37, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x71F0, symBinAddr: 0x1C730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x31C51, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x71F8, symBinAddr: 0x1C738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x31C6B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x2C508, symBinAddr: 0x1DB48, symSize: 0x0 }
- { offsetInCU: 0x2A8, offset: 0x31DEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x4E90, symSize: 0x2C0 }
- { offsetInCU: 0xAC6, offset: 0x3260C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2C0, symBinAddr: 0x5150, symSize: 0x70 }
- { offsetInCU: 0xB04, offset: 0x3264A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x330, symBinAddr: 0x51C0, symSize: 0x10 }
- { offsetInCU: 0xB2E, offset: 0x32674, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x390, symBinAddr: 0x5220, symSize: 0x30 }
- { offsetInCU: 0xB6E, offset: 0x326B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3C0, symBinAddr: 0x5250, symSize: 0x60 }
- { offsetInCU: 0xBC0, offset: 0x32706, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x650, symBinAddr: 0x54E0, symSize: 0x30 }
- { offsetInCU: 0xC05, offset: 0x3274B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x680, symBinAddr: 0x5510, symSize: 0x50 }
- { offsetInCU: 0xC6A, offset: 0x327B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x6D0, symBinAddr: 0x5560, symSize: 0x460 }
- { offsetInCU: 0x15D1, offset: 0x33117, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB30, symBinAddr: 0x59C0, symSize: 0x740 }
- { offsetInCU: 0x2140, offset: 0x33C86, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1270, symBinAddr: 0x6100, symSize: 0x6D0 }
- { offsetInCU: 0x2BB3, offset: 0x346F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1940, symBinAddr: 0x67D0, symSize: 0x740 }
- { offsetInCU: 0x3725, offset: 0x3526B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x2080, symBinAddr: 0x6F10, symSize: 0x4C0 }
- { offsetInCU: 0x3DE7, offset: 0x3592D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x2540, symBinAddr: 0x73D0, symSize: 0x390 }
- { offsetInCU: 0x4327, offset: 0x35E6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x28D0, symBinAddr: 0x7760, symSize: 0x5D0 }
- { offsetInCU: 0x4C67, offset: 0x367AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2EA0, symBinAddr: 0x7D30, symSize: 0x140 }
- { offsetInCU: 0x4E34, offset: 0x3697A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2FE0, symBinAddr: 0x7E70, symSize: 0x150 }
- { offsetInCU: 0x505D, offset: 0x36BA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x3130, symBinAddr: 0x7FC0, symSize: 0x80 }
- { offsetInCU: 0x512F, offset: 0x36C75, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x31B0, symBinAddr: 0x8040, symSize: 0xF0 }
- { offsetInCU: 0x539B, offset: 0x36EE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x32A0, symBinAddr: 0x8130, symSize: 0x30 }
- { offsetInCU: 0x5482, offset: 0x36FC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x32D0, symBinAddr: 0x8160, symSize: 0x1B0 }
- { offsetInCU: 0x5622, offset: 0x37168, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x3480, symBinAddr: 0x8310, symSize: 0x4F0 }
- { offsetInCU: 0x5B31, offset: 0x37677, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x3970, symBinAddr: 0x8800, symSize: 0x10 }
- { offsetInCU: 0x5B45, offset: 0x3768B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3980, symBinAddr: 0x8810, symSize: 0x10 }
- { offsetInCU: 0x5B77, offset: 0x376BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x3990, symBinAddr: 0x8820, symSize: 0x70 }
- { offsetInCU: 0x5BC4, offset: 0x3770A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x3A00, symBinAddr: 0x8890, symSize: 0x10 }
- { offsetInCU: 0x5BFC, offset: 0x37742, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x3A10, symBinAddr: 0x88A0, symSize: 0x10 }
- { offsetInCU: 0x5C18, offset: 0x3775E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x3A20, symBinAddr: 0x88B0, symSize: 0x10 }
- { offsetInCU: 0x5C34, offset: 0x3777A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x3A30, symBinAddr: 0x88C0, symSize: 0x10 }
- { offsetInCU: 0x5C50, offset: 0x37796, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x3A40, symBinAddr: 0x88D0, symSize: 0x10 }
- { offsetInCU: 0x5C6C, offset: 0x377B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x3A50, symBinAddr: 0x88E0, symSize: 0x10 }
- { offsetInCU: 0x5C88, offset: 0x377CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x3A60, symBinAddr: 0x88F0, symSize: 0x10 }
- { offsetInCU: 0x5CA4, offset: 0x377EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x3A70, symBinAddr: 0x8900, symSize: 0x10 }
- { offsetInCU: 0x5CD9, offset: 0x3781F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3A80, symBinAddr: 0x8910, symSize: 0x10 }
- { offsetInCU: 0x5D1E, offset: 0x37864, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x3A90, symBinAddr: 0x8920, symSize: 0x10 }
- { offsetInCU: 0x5D51, offset: 0x37897, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5C40, symBinAddr: 0xAAD0, symSize: 0x2E0 }
- { offsetInCU: 0x60E8, offset: 0x37C2E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x5F20, symBinAddr: 0xADB0, symSize: 0x3D0 }
- { offsetInCU: 0x65E9, offset: 0x3812F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x62F0, symBinAddr: 0xB180, symSize: 0x150 }
- { offsetInCU: 0x6791, offset: 0x382D7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6440, symBinAddr: 0xB2D0, symSize: 0x150 }
- { offsetInCU: 0x6859, offset: 0x3839F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6590, symBinAddr: 0xB420, symSize: 0xB0 }
- { offsetInCU: 0x695B, offset: 0x384A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x340, symBinAddr: 0x51D0, symSize: 0x20 }
- { offsetInCU: 0x6975, offset: 0x384BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x360, symBinAddr: 0x51F0, symSize: 0x30 }
- { offsetInCU: 0x69AB, offset: 0x384F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x420, symBinAddr: 0x52B0, symSize: 0x30 }
- { offsetInCU: 0x69C5, offset: 0x3850B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x4E0, symBinAddr: 0x5370, symSize: 0x20 }
- { offsetInCU: 0x69DF, offset: 0x38525, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x500, symBinAddr: 0x5390, symSize: 0x20 }
- { offsetInCU: 0x6F06, offset: 0x38A4C, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3AA0, symBinAddr: 0x8930, symSize: 0xB0 }
- { offsetInCU: 0x6F7B, offset: 0x38AC1, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3B50, symBinAddr: 0x89E0, symSize: 0x60 }
- { offsetInCU: 0x6FA8, offset: 0x38AEE, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3BB0, symBinAddr: 0x8A40, symSize: 0x30 }
- { offsetInCU: 0x6FEB, offset: 0x38B31, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3BE0, symBinAddr: 0x8A70, symSize: 0x50 }
- { offsetInCU: 0x7063, offset: 0x38BA9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3C30, symBinAddr: 0x8AC0, symSize: 0xD0 }
- { offsetInCU: 0x719B, offset: 0x38CE1, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3D00, symBinAddr: 0x8B90, symSize: 0x30 }
- { offsetInCU: 0x71BE, offset: 0x38D04, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x3D30, symBinAddr: 0x8BC0, symSize: 0x20 }
- { offsetInCU: 0x71F9, offset: 0x38D3F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3D50, symBinAddr: 0x8BE0, symSize: 0xB0 }
- { offsetInCU: 0x7261, offset: 0x38DA7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3E00, symBinAddr: 0x8C90, symSize: 0xC0 }
- { offsetInCU: 0x72B7, offset: 0x38DFD, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3EC0, symBinAddr: 0x8D50, symSize: 0x80 }
- { offsetInCU: 0x7324, offset: 0x38E6A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3FA0, symBinAddr: 0x8E30, symSize: 0x1E0 }
- { offsetInCU: 0x7447, offset: 0x38F8D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x4180, symBinAddr: 0x9010, symSize: 0x50 }
- { offsetInCU: 0x7518, offset: 0x3905E, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x41D0, symBinAddr: 0x9060, symSize: 0x210 }
- { offsetInCU: 0x76D8, offset: 0x3921E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4470, symBinAddr: 0x9300, symSize: 0x200 }
- { offsetInCU: 0x7751, offset: 0x39297, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4670, symBinAddr: 0x9500, symSize: 0x210 }
- { offsetInCU: 0x77EB, offset: 0x39331, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4880, symBinAddr: 0x9710, symSize: 0x380 }
- { offsetInCU: 0x7988, offset: 0x394CE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4C00, symBinAddr: 0x9A90, symSize: 0x330 }
- { offsetInCU: 0x7AAF, offset: 0x395F5, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4F30, symBinAddr: 0x9DC0, symSize: 0x140 }
- { offsetInCU: 0x7CC8, offset: 0x3980E, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5070, symBinAddr: 0x9F00, symSize: 0x160 }
- { offsetInCU: 0x7EF4, offset: 0x39A3A, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x51D0, symBinAddr: 0xA060, symSize: 0x1C0 }
- { offsetInCU: 0x7F58, offset: 0x39A9E, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5390, symBinAddr: 0xA220, symSize: 0x2F0 }
- { offsetInCU: 0x8173, offset: 0x39CB9, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5680, symBinAddr: 0xA510, symSize: 0x350 }
- { offsetInCU: 0x83B8, offset: 0x39EFE, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x59D0, symBinAddr: 0xA860, symSize: 0x20 }
- { offsetInCU: 0x83D0, offset: 0x39F16, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x59F0, symBinAddr: 0xA880, symSize: 0x20 }
- { offsetInCU: 0x842A, offset: 0x39F70, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5A10, symBinAddr: 0xA8A0, symSize: 0x120 }
- { offsetInCU: 0x8582, offset: 0x3A0C8, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5B30, symBinAddr: 0xA9C0, symSize: 0x110 }
- { offsetInCU: 0x87DD, offset: 0x3A323, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x6830, symBinAddr: 0xB6C0, symSize: 0x30 }
- { offsetInCU: 0x87F1, offset: 0x3A337, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6860, symBinAddr: 0xB6F0, symSize: 0x30 }
- { offsetInCU: 0x8805, offset: 0x3A34B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6890, symBinAddr: 0xB720, symSize: 0x30 }
- { offsetInCU: 0x8819, offset: 0x3A35F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x68C0, symBinAddr: 0xB750, symSize: 0x20 }
- { offsetInCU: 0x882D, offset: 0x3A373, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x68E0, symBinAddr: 0xB770, symSize: 0x30 }
- { offsetInCU: 0x8841, offset: 0x3A387, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6910, symBinAddr: 0xB7A0, symSize: 0x50 }
- { offsetInCU: 0x8855, offset: 0x3A39B, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6960, symBinAddr: 0xB7F0, symSize: 0x10 }
- { offsetInCU: 0x8869, offset: 0x3A3AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x6970, symBinAddr: 0xB800, symSize: 0x30 }
- { offsetInCU: 0x887D, offset: 0x3A3C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x69A0, symBinAddr: 0xB830, symSize: 0x40 }
- { offsetInCU: 0x8891, offset: 0x3A3D7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x69E0, symBinAddr: 0xB870, symSize: 0x40 }
- { offsetInCU: 0x88A5, offset: 0x3A3EB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6A20, symBinAddr: 0xB8B0, symSize: 0x10 }
- { offsetInCU: 0x88B9, offset: 0x3A3FF, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6A30, symBinAddr: 0xB8C0, symSize: 0x40 }
- { offsetInCU: 0x897D, offset: 0x3A4C3, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6B70, symBinAddr: 0xBA00, symSize: 0x150 }
- { offsetInCU: 0x8A4E, offset: 0x3A594, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x6CC0, symBinAddr: 0xBB50, symSize: 0xA0 }
- { offsetInCU: 0x8C5D, offset: 0x3A7A3, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x520, symBinAddr: 0x53B0, symSize: 0x40 }
- { offsetInCU: 0x8C79, offset: 0x3A7BF, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x560, symBinAddr: 0x53F0, symSize: 0x20 }
- { offsetInCU: 0x8D23, offset: 0x3A869, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x580, symBinAddr: 0x5410, symSize: 0xD0 }
- { offsetInCU: 0x9295, offset: 0x3ADDB, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x6640, symBinAddr: 0xB4D0, symSize: 0x100 }
- { offsetInCU: 0x93C6, offset: 0x3AF0C, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x6740, symBinAddr: 0xB5D0, symSize: 0xF0 }
- { offsetInCU: 0x9513, offset: 0x3B059, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6A70, symBinAddr: 0xB900, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x3B392, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBFF0, symSize: 0x20 }
- { offsetInCU: 0x4B, offset: 0x3B3B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBFF0, symSize: 0x20 }
- { offsetInCU: 0x9A, offset: 0x3B405, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x20, symBinAddr: 0xC010, symSize: 0x100 }
- { offsetInCU: 0x1DF, offset: 0x3B54A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x120, symBinAddr: 0xC110, symSize: 0x10 }
- { offsetInCU: 0x1FD, offset: 0x3B568, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x130, symBinAddr: 0xC120, symSize: 0x10 }
- { offsetInCU: 0x21B, offset: 0x3B586, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x140, symBinAddr: 0xC130, symSize: 0x10 }
- { offsetInCU: 0x239, offset: 0x3B5A4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x150, symBinAddr: 0xC140, symSize: 0x10 }
- { offsetInCU: 0x277, offset: 0x3B5E2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x160, symBinAddr: 0xC150, symSize: 0x20 }
- { offsetInCU: 0x2A5, offset: 0x3B610, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x180, symBinAddr: 0xC170, symSize: 0x10 }
- { offsetInCU: 0x2D0, offset: 0x3B63B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x190, symBinAddr: 0xC180, symSize: 0x10 }
- { offsetInCU: 0x2E4, offset: 0x3B64F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1A0, symBinAddr: 0xC190, symSize: 0x10 }
- { offsetInCU: 0x30F, offset: 0x3B67A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1B0, symBinAddr: 0xC1A0, symSize: 0x10 }
- { offsetInCU: 0x340, offset: 0x3B6AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1C0, symBinAddr: 0xC1B0, symSize: 0x60 }
- { offsetInCU: 0x3B4, offset: 0x3B71F, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x220, symBinAddr: 0xC210, symSize: 0x10 }
- { offsetInCU: 0x3C8, offset: 0x3B733, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x240, symBinAddr: 0xC220, symSize: 0x40 }
- { offsetInCU: 0x3DC, offset: 0x3B747, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x280, symBinAddr: 0xC260, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x3B75B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x2C0, symBinAddr: 0xC2A0, symSize: 0xA }
- { offsetInCU: 0x2B, offset: 0x3B866, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC2B0, symSize: 0x170 }
- { offsetInCU: 0x4F, offset: 0x3B88A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xBDD0, symBinAddr: 0x1DB50, symSize: 0x0 }
- { offsetInCU: 0x195, offset: 0x3B9D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC2B0, symSize: 0x170 }
- { offsetInCU: 0x575, offset: 0x3BDB0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x170, symBinAddr: 0xC420, symSize: 0x70 }
- { offsetInCU: 0x5B3, offset: 0x3BDEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x1E0, symBinAddr: 0xC490, symSize: 0x10 }
- { offsetInCU: 0x5CE, offset: 0x3BE09, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x1F0, symBinAddr: 0xC4A0, symSize: 0x30 }
- { offsetInCU: 0x612, offset: 0x3BE4D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x220, symBinAddr: 0xC4D0, symSize: 0x50 }
- { offsetInCU: 0x676, offset: 0x3BEB1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x270, symBinAddr: 0xC520, symSize: 0x1B0 }
- { offsetInCU: 0x9B0, offset: 0x3C1EB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x420, symBinAddr: 0xC6D0, symSize: 0x2A0 }
- { offsetInCU: 0xDB1, offset: 0x3C5EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6C0, symBinAddr: 0xC970, symSize: 0x80 }
- { offsetInCU: 0xEAA, offset: 0x3C6E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x740, symBinAddr: 0xC9F0, symSize: 0xF0 }
- { offsetInCU: 0x1085, offset: 0x3C8C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x830, symBinAddr: 0xCAE0, symSize: 0x30 }
- { offsetInCU: 0x116B, offset: 0x3C9A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x860, symBinAddr: 0xCB10, symSize: 0x130 }
- { offsetInCU: 0x12C3, offset: 0x3CAFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x990, symBinAddr: 0xCC40, symSize: 0x240 }
- { offsetInCU: 0x146A, offset: 0x3CCA5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBD0, symBinAddr: 0xCE80, symSize: 0x10 }
- { offsetInCU: 0x147E, offset: 0x3CCB9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBE0, symBinAddr: 0xCE90, symSize: 0x10 }
- { offsetInCU: 0x14B0, offset: 0x3CCEB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBF0, symBinAddr: 0xCEA0, symSize: 0x70 }
- { offsetInCU: 0x14FD, offset: 0x3CD38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC60, symBinAddr: 0xCF10, symSize: 0x10 }
- { offsetInCU: 0x1535, offset: 0x3CD70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC70, symBinAddr: 0xCF20, symSize: 0x10 }
- { offsetInCU: 0x1551, offset: 0x3CD8C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC80, symBinAddr: 0xCF30, symSize: 0x10 }
- { offsetInCU: 0x156D, offset: 0x3CDA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC90, symBinAddr: 0xCF40, symSize: 0x10 }
- { offsetInCU: 0x1589, offset: 0x3CDC4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xCA0, symBinAddr: 0xCF50, symSize: 0x10 }
- { offsetInCU: 0x15A5, offset: 0x3CDE0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xCB0, symBinAddr: 0xCF60, symSize: 0x10 }
- { offsetInCU: 0x15C1, offset: 0x3CDFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xCC0, symBinAddr: 0xCF70, symSize: 0x10 }
- { offsetInCU: 0x15DD, offset: 0x3CE18, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xCD0, symBinAddr: 0xCF80, symSize: 0x10 }
- { offsetInCU: 0x1611, offset: 0x3CE4C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCE0, symBinAddr: 0xCF90, symSize: 0x10 }
- { offsetInCU: 0x1654, offset: 0x3CE8F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCF0, symBinAddr: 0xCFA0, symSize: 0x10 }
- { offsetInCU: 0x1686, offset: 0x3CEC1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xD00, symBinAddr: 0xCFB0, symSize: 0x130 }
- { offsetInCU: 0x18E4, offset: 0x3D11F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE30, symBinAddr: 0xD0E0, symSize: 0x230 }
- { offsetInCU: 0x1CEA, offset: 0x3D525, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1060, symBinAddr: 0xD310, symSize: 0xC0 }
- { offsetInCU: 0x1F87, offset: 0x3D7C2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11C0, symBinAddr: 0xD3D0, symSize: 0x30 }
- { offsetInCU: 0x1F9B, offset: 0x3D7D6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11F0, symBinAddr: 0xD400, symSize: 0x20 }
- { offsetInCU: 0x1FAF, offset: 0x3D7EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1210, symBinAddr: 0xD420, symSize: 0x30 }
- { offsetInCU: 0x1FC3, offset: 0x3D7FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1240, symBinAddr: 0xD450, symSize: 0x50 }
- { offsetInCU: 0x1FD7, offset: 0x3D812, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x12A0, symBinAddr: 0xD4A0, symSize: 0x30 }
- { offsetInCU: 0x1FEB, offset: 0x3D826, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12D0, symBinAddr: 0xD4D0, symSize: 0x40 }
- { offsetInCU: 0x1FFF, offset: 0x3D83A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1310, symBinAddr: 0xD510, symSize: 0x40 }
- { offsetInCU: 0x2013, offset: 0x3D84E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1350, symBinAddr: 0xD550, symSize: 0xA }
- { offsetInCU: 0x72, offset: 0x3DC02, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD610, symSize: 0x60 }
- { offsetInCU: 0xC3, offset: 0x3DC53, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x80, symBinAddr: 0xD690, symSize: 0x20 }
- { offsetInCU: 0xE0, offset: 0x3DC70, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xA0, symBinAddr: 0xD6B0, symSize: 0xE0 }
- { offsetInCU: 0x1F4, offset: 0x3DD84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x180, symBinAddr: 0xD790, symSize: 0x50 }
- { offsetInCU: 0x27B, offset: 0x3DE0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1D0, symBinAddr: 0xD7E0, symSize: 0x110 }
- { offsetInCU: 0x3D9, offset: 0x3DF69, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2E0, symBinAddr: 0xD8F0, symSize: 0x80 }
- { offsetInCU: 0x490, offset: 0x3E020, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x360, symBinAddr: 0xD970, symSize: 0x120 }
- { offsetInCU: 0x571, offset: 0x3E101, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x480, symBinAddr: 0xDA90, symSize: 0x50 }
- { offsetInCU: 0x5E3, offset: 0x3E173, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x4D0, symBinAddr: 0xDAE0, symSize: 0x30 }
- { offsetInCU: 0x610, offset: 0x3E1A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x500, symBinAddr: 0xDB10, symSize: 0x10 }
- { offsetInCU: 0x673, offset: 0x3E203, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x510, symBinAddr: 0xDB20, symSize: 0x90 }
- { offsetInCU: 0x6D0, offset: 0x3E260, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x5A0, symBinAddr: 0xDBB0, symSize: 0x30 }
- { offsetInCU: 0x740, offset: 0x3E2D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x790, symBinAddr: 0xDDA0, symSize: 0x30 }
- { offsetInCU: 0x784, offset: 0x3E314, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x60, symBinAddr: 0xD670, symSize: 0x20 }
- { offsetInCU: 0x88B, offset: 0x3E41B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x5D0, symBinAddr: 0xDBE0, symSize: 0x70 }
- { offsetInCU: 0x8C5, offset: 0x3E455, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x640, symBinAddr: 0xDC50, symSize: 0x50 }
- { offsetInCU: 0x91F, offset: 0x3E4AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x6B0, symBinAddr: 0xDCC0, symSize: 0x90 }
- { offsetInCU: 0x94F, offset: 0x3E4DF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x740, symBinAddr: 0xDD50, symSize: 0x50 }
- { offsetInCU: 0xA11, offset: 0x3E5A1, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x910, symBinAddr: 0xDF20, symSize: 0x110 }
- { offsetInCU: 0xB9C, offset: 0x3E72C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0xA60, symBinAddr: 0xE030, symSize: 0x120 }
- { offsetInCU: 0xD3F, offset: 0x3E8CF, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xB80, symBinAddr: 0xE150, symSize: 0x110 }
- { offsetInCU: 0xEED, offset: 0x3EA7D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xC90, symBinAddr: 0xE260, symSize: 0x130 }
- { offsetInCU: 0x27, offset: 0x3EDA2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE5E0, symSize: 0x10 }
- { offsetInCU: 0x3F, offset: 0x3EDBA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x40, symBinAddr: 0xE620, symSize: 0x40 }
- { offsetInCU: 0x53, offset: 0x3EDCE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0x80, symBinAddr: 0xE660, symSize: 0x20 }
- { offsetInCU: 0x67, offset: 0x3EDE2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0xA0, symBinAddr: 0xE680, symSize: 0x40 }
- { offsetInCU: 0x7B, offset: 0x3EDF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0xE0, symBinAddr: 0xE6C0, symSize: 0x80 }
- { offsetInCU: 0x8F, offset: 0x3EE0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x170, symBinAddr: 0xE740, symSize: 0x50 }
- { offsetInCU: 0xA3, offset: 0x3EE1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x1C0, symBinAddr: 0xE790, symSize: 0x50 }
- { offsetInCU: 0xB7, offset: 0x3EE32, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x210, symBinAddr: 0xE7E0, symSize: 0x50 }
- { offsetInCU: 0xCB, offset: 0x3EE46, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x260, symBinAddr: 0xE830, symSize: 0x20 }
- { offsetInCU: 0xDF, offset: 0x3EE5A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x280, symBinAddr: 0xE850, symSize: 0x10 }
- { offsetInCU: 0xF3, offset: 0x3EE6E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x290, symBinAddr: 0xE860, symSize: 0x30 }
- { offsetInCU: 0x107, offset: 0x3EE82, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x2C0, symBinAddr: 0xE890, symSize: 0xA }
- { offsetInCU: 0x12C, offset: 0x3EEA7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE5E0, symSize: 0x10 }
- { offsetInCU: 0x148, offset: 0x3EEC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x10, symBinAddr: 0xE5F0, symSize: 0x10 }
- { offsetInCU: 0x164, offset: 0x3EEDF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x20, symBinAddr: 0xE600, symSize: 0x10 }
- { offsetInCU: 0x180, offset: 0x3EEFB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x30, symBinAddr: 0xE610, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x3EF8F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE8A0, symSize: 0x40 }
- { offsetInCU: 0x52, offset: 0x3EFBA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE8A0, symSize: 0x40 }
- { offsetInCU: 0xBB, offset: 0x3F023, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x40, symBinAddr: 0xE8E0, symSize: 0x200 }
- { offsetInCU: 0x394, offset: 0x3F2FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x240, symBinAddr: 0xEAE0, symSize: 0x80 }
- { offsetInCU: 0x48D, offset: 0x3F3F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x2C0, symBinAddr: 0xEB60, symSize: 0x140 }
- { offsetInCU: 0x5AF, offset: 0x3F517, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x400, symBinAddr: 0xECA0, symSize: 0x60 }
- { offsetInCU: 0x696, offset: 0x3F5FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x490, symBinAddr: 0xED30, symSize: 0x90 }
- { offsetInCU: 0x72D, offset: 0x3F695, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x520, symBinAddr: 0xEDC0, symSize: 0x70 }
- { offsetInCU: 0x7B6, offset: 0x3F71E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x590, symBinAddr: 0xEE30, symSize: 0x20 }
- { offsetInCU: 0x815, offset: 0x3F77D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x5B0, symBinAddr: 0xEE50, symSize: 0x30 }
- { offsetInCU: 0xA42, offset: 0x3F9AA, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x460, symBinAddr: 0xED00, symSize: 0x30 }
- { offsetInCU: 0xB2A, offset: 0x3FA92, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x5E0, symBinAddr: 0xEE80, symSize: 0xB0 }
- { offsetInCU: 0xBF7, offset: 0x3FB5F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x690, symBinAddr: 0xEF30, symSize: 0x14 }
- { offsetInCU: 0x27, offset: 0x3FD0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xEF50, symSize: 0x40 }
- { offsetInCU: 0x6C, offset: 0x3FD50, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xEF50, symSize: 0x40 }
- { offsetInCU: 0xDB, offset: 0x3FDBF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x80, symBinAddr: 0xEF90, symSize: 0x10 }
- { offsetInCU: 0x10A, offset: 0x3FDEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x90, symBinAddr: 0xEFA0, symSize: 0x20 }
- { offsetInCU: 0x1A0, offset: 0x3FE84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xB0, symBinAddr: 0xEFC0, symSize: 0x40 }
- { offsetInCU: 0x29B, offset: 0x3FF7F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF0, symBinAddr: 0xF000, symSize: 0x10 }
- { offsetInCU: 0x2F1, offset: 0x3FFD5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x100, symBinAddr: 0xF010, symSize: 0x40 }
- { offsetInCU: 0x3D5, offset: 0x400B9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x140, symBinAddr: 0xF050, symSize: 0x20 }
- { offsetInCU: 0x461, offset: 0x40145, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x270, symBinAddr: 0xF180, symSize: 0x50 }
- { offsetInCU: 0x4FD, offset: 0x401E1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1A0, symBinAddr: 0xF0B0, symSize: 0x10 }
- { offsetInCU: 0x511, offset: 0x401F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1B0, symBinAddr: 0xF0C0, symSize: 0x30 }
- { offsetInCU: 0x525, offset: 0x40209, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x1E0, symBinAddr: 0xF0F0, symSize: 0x10 }
- { offsetInCU: 0x539, offset: 0x4021D, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x1F0, symBinAddr: 0xF100, symSize: 0x40 }
- { offsetInCU: 0x54D, offset: 0x40231, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x230, symBinAddr: 0xF140, symSize: 0x40 }
- { offsetInCU: 0x561, offset: 0x40245, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x2E0, symBinAddr: 0xF1D0, symSize: 0x80 }
- { offsetInCU: 0x575, offset: 0x40259, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x360, symBinAddr: 0xF250, symSize: 0xD0 }
- { offsetInCU: 0x589, offset: 0x4026D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x430, symBinAddr: 0xF320, symSize: 0x10 }
- { offsetInCU: 0x59D, offset: 0x40281, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x440, symBinAddr: 0xF330, symSize: 0x10 }
- { offsetInCU: 0x5B1, offset: 0x40295, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x450, symBinAddr: 0xF340, symSize: 0x10 }
- { offsetInCU: 0x5C5, offset: 0x402A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x460, symBinAddr: 0xF350, symSize: 0xA }
- { offsetInCU: 0x632, offset: 0x40316, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x160, symBinAddr: 0xF070, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x40457, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xF360, symSize: 0x60 }
- { offsetInCU: 0xA6, offset: 0x404D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xF360, symSize: 0x60 }
- { offsetInCU: 0x285, offset: 0x406B1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x60, symBinAddr: 0xF3C0, symSize: 0x1B0 }
- { offsetInCU: 0x529, offset: 0x40955, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x210, symBinAddr: 0xF570, symSize: 0xB0 }
- { offsetInCU: 0x764, offset: 0x40B90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2C0, symBinAddr: 0xF620, symSize: 0x10 }
- { offsetInCU: 0x782, offset: 0x40BAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x2D0, symBinAddr: 0xF630, symSize: 0x10 }
- { offsetInCU: 0x7A0, offset: 0x40BCC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x2E0, symBinAddr: 0xF640, symSize: 0x10 }
- { offsetInCU: 0x7BE, offset: 0x40BEA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x2F0, symBinAddr: 0xF650, symSize: 0xA0 }
- { offsetInCU: 0x9F2, offset: 0x40E1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x390, symBinAddr: 0xF6F0, symSize: 0x110 }
- { offsetInCU: 0xBA1, offset: 0x40FCD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x4A0, symBinAddr: 0xF800, symSize: 0xF0 }
- { offsetInCU: 0xD6F, offset: 0x4119B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x590, symBinAddr: 0xF8F0, symSize: 0x30 }
- { offsetInCU: 0xDB1, offset: 0x411DD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x5C0, symBinAddr: 0xF920, symSize: 0x50 }
- { offsetInCU: 0xE3D, offset: 0x41269, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x610, symBinAddr: 0xF970, symSize: 0x50 }
- { offsetInCU: 0xECC, offset: 0x412F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x660, symBinAddr: 0xF9C0, symSize: 0x10 }
- { offsetInCU: 0xEFA, offset: 0x41326, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x6C0, symBinAddr: 0xFA20, symSize: 0x30 }
- { offsetInCU: 0x1189, offset: 0x415B5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x6F0, symBinAddr: 0xFA50, symSize: 0x20 }
- { offsetInCU: 0x11C1, offset: 0x415ED, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x710, symBinAddr: 0xFA70, symSize: 0x20 }
- { offsetInCU: 0x11F9, offset: 0x41625, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x730, symBinAddr: 0xFA90, symSize: 0x20 }
- { offsetInCU: 0x1231, offset: 0x4165D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x920, symBinAddr: 0xFC80, symSize: 0x10 }
- { offsetInCU: 0x1245, offset: 0x41671, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x930, symBinAddr: 0xFC90, symSize: 0x30 }
- { offsetInCU: 0x1259, offset: 0x41685, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x960, symBinAddr: 0xFCC0, symSize: 0x30 }
- { offsetInCU: 0x126D, offset: 0x41699, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0x990, symBinAddr: 0xFCF0, symSize: 0x10 }
- { offsetInCU: 0x1281, offset: 0x416AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0x9A0, symBinAddr: 0xFD00, symSize: 0x30 }
- { offsetInCU: 0x1295, offset: 0x416C1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0x9D0, symBinAddr: 0xFD30, symSize: 0x40 }
- { offsetInCU: 0x12A9, offset: 0x416D5, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0xA10, symBinAddr: 0xFD70, symSize: 0x20 }
- { offsetInCU: 0x12BD, offset: 0x416E9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0xA30, symBinAddr: 0xFD90, symSize: 0x30 }
- { offsetInCU: 0x12D1, offset: 0x416FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xA60, symBinAddr: 0xFDC0, symSize: 0x40 }
- { offsetInCU: 0x12E5, offset: 0x41711, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xAA0, symBinAddr: 0xFE00, symSize: 0x40 }
- { offsetInCU: 0x12F9, offset: 0x41725, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xAE0, symBinAddr: 0xFE40, symSize: 0xA }
- { offsetInCU: 0x1452, offset: 0x4187E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x670, symBinAddr: 0xF9D0, symSize: 0x50 }
- { offsetInCU: 0x1490, offset: 0x418BC, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x750, symBinAddr: 0xFAB0, symSize: 0xA0 }
- { offsetInCU: 0x1564, offset: 0x41990, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x7F0, symBinAddr: 0xFB50, symSize: 0x130 }
- { offsetInCU: 0x27, offset: 0x41BD9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xFE50, symSize: 0x20 }
- { offsetInCU: 0x46, offset: 0x41BF8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xFE50, symSize: 0x20 }
- { offsetInCU: 0x85, offset: 0x41C37, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x20, symBinAddr: 0xFE70, symSize: 0xC0 }
- { offsetInCU: 0x176, offset: 0x41D28, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xE0, symBinAddr: 0xFF30, symSize: 0x10 }
- { offsetInCU: 0x194, offset: 0x41D46, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xF0, symBinAddr: 0xFF40, symSize: 0x10 }
- { offsetInCU: 0x1B2, offset: 0x41D64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0x100, symBinAddr: 0xFF50, symSize: 0x40 }
- { offsetInCU: 0x2E8, offset: 0x41E9A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x140, symBinAddr: 0xFF90, symSize: 0x30 }
- { offsetInCU: 0x32D, offset: 0x41EDF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x170, symBinAddr: 0xFFC0, symSize: 0x50 }
- { offsetInCU: 0x4C4, offset: 0x42076, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1C0, symBinAddr: 0x10010, symSize: 0x10 }
- { offsetInCU: 0x4EF, offset: 0x420A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x1D0, symBinAddr: 0x10020, symSize: 0x50 }
- { offsetInCU: 0x6A3, offset: 0x42255, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x220, symBinAddr: 0x10070, symSize: 0x40 }
- { offsetInCU: 0x808, offset: 0x423BA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2B0, symBinAddr: 0x10100, symSize: 0x30 }
- { offsetInCU: 0x8DA, offset: 0x4248C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2E0, symBinAddr: 0x10130, symSize: 0x10 }
- { offsetInCU: 0x8EE, offset: 0x424A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2F0, symBinAddr: 0x10140, symSize: 0x30 }
- { offsetInCU: 0x902, offset: 0x424B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x340, symBinAddr: 0x10170, symSize: 0x90 }
- { offsetInCU: 0x916, offset: 0x424C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x3D0, symBinAddr: 0x10200, symSize: 0xE0 }
- { offsetInCU: 0x92A, offset: 0x424DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x4B0, symBinAddr: 0x102E0, symSize: 0xA }
- { offsetInCU: 0x9CF, offset: 0x42581, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x260, symBinAddr: 0x100B0, symSize: 0x50 }
- { offsetInCU: 0x27, offset: 0x42787, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x102F0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x427AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x102F0, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x427CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x50, symBinAddr: 0x10340, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x427FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x60, symBinAddr: 0x10350, symSize: 0x110 }
- { offsetInCU: 0x15B, offset: 0x428BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x170, symBinAddr: 0x10460, symSize: 0x30 }
- { offsetInCU: 0x16F, offset: 0x428CF, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x1B0, symBinAddr: 0x10490, symSize: 0x20 }
- { offsetInCU: 0x183, offset: 0x428E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x1D0, symBinAddr: 0x104B0, symSize: 0x50 }
- { offsetInCU: 0x197, offset: 0x428F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x220, symBinAddr: 0x10500, symSize: 0x50 }
- { offsetInCU: 0x1AB, offset: 0x4290B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x270, symBinAddr: 0x10550, symSize: 0x20 }
- { offsetInCU: 0x1BF, offset: 0x4291F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x290, symBinAddr: 0x10570, symSize: 0x10 }
- { offsetInCU: 0x1D3, offset: 0x42933, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x2A0, symBinAddr: 0x10580, symSize: 0x20 }
- { offsetInCU: 0x1E7, offset: 0x42947, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x2C0, symBinAddr: 0x105A0, symSize: 0xA }
- { offsetInCU: 0x20C, offset: 0x4296C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x10, symBinAddr: 0x10300, symSize: 0x10 }
- { offsetInCU: 0x228, offset: 0x42988, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x20, symBinAddr: 0x10310, symSize: 0x10 }
- { offsetInCU: 0x244, offset: 0x429A4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x30, symBinAddr: 0x10320, symSize: 0x10 }
- { offsetInCU: 0x260, offset: 0x429C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x40, symBinAddr: 0x10330, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x42A64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x105B0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x42A88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x105B0, symSize: 0x10 }
- { offsetInCU: 0x7A, offset: 0x42AB7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x10, symBinAddr: 0x105C0, symSize: 0x20 }
- { offsetInCU: 0xA5, offset: 0x42AE2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x105E0, symSize: 0x20 }
- { offsetInCU: 0x13B, offset: 0x42B78, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x10600, symSize: 0x40 }
- { offsetInCU: 0x236, offset: 0x42C73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x10640, symSize: 0x10 }
- { offsetInCU: 0x28C, offset: 0x42CC9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x10650, symSize: 0x40 }
- { offsetInCU: 0x370, offset: 0x42DAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x10690, symSize: 0x20 }
- { offsetInCU: 0x3F9, offset: 0x42E36, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x140, symBinAddr: 0x106F0, symSize: 0x10 }
- { offsetInCU: 0x40D, offset: 0x42E4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x150, symBinAddr: 0x10700, symSize: 0x30 }
- { offsetInCU: 0x421, offset: 0x42E5E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1A0, symBinAddr: 0x10730, symSize: 0x80 }
- { offsetInCU: 0x435, offset: 0x42E72, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x220, symBinAddr: 0x107B0, symSize: 0xD0 }
- { offsetInCU: 0x449, offset: 0x42E86, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2F0, symBinAddr: 0x10880, symSize: 0x10 }
- { offsetInCU: 0x45D, offset: 0x42E9A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x300, symBinAddr: 0x10890, symSize: 0x10 }
- { offsetInCU: 0x471, offset: 0x42EAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x310, symBinAddr: 0x108A0, symSize: 0x10 }
- { offsetInCU: 0x485, offset: 0x42EC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x320, symBinAddr: 0x108B0, symSize: 0xA }
- { offsetInCU: 0x4DD, offset: 0x42F1A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x106B0, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x43045, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x108C0, symSize: 0x70 }
- { offsetInCU: 0xD3, offset: 0x430F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x108C0, symSize: 0x70 }
- { offsetInCU: 0x145, offset: 0x43163, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x70, symBinAddr: 0x10930, symSize: 0x20 }
- { offsetInCU: 0x1AA, offset: 0x431C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0x10950, symSize: 0x90 }
- { offsetInCU: 0x248, offset: 0x43266, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x120, symBinAddr: 0x109E0, symSize: 0x30 }
- { offsetInCU: 0x2A2, offset: 0x432C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x150, symBinAddr: 0x10A10, symSize: 0x14 }
- { offsetInCU: 0x27, offset: 0x43389, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10A30, symSize: 0x10 }
- { offsetInCU: 0x46, offset: 0x433A8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10A30, symSize: 0x10 }
- { offsetInCU: 0x5A, offset: 0x433BC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x10, symBinAddr: 0x10A40, symSize: 0x20 }
- { offsetInCU: 0xC1, offset: 0x43423, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x30, symBinAddr: 0x10A60, symSize: 0x10 }
- { offsetInCU: 0xDF, offset: 0x43441, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x40, symBinAddr: 0x10A70, symSize: 0x10 }
- { offsetInCU: 0xFD, offset: 0x4345F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x50, symBinAddr: 0x10A80, symSize: 0x10 }
- { offsetInCU: 0x11B, offset: 0x4347D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x60, symBinAddr: 0x10A90, symSize: 0x10 }
- { offsetInCU: 0x139, offset: 0x4349B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x70, symBinAddr: 0x10AA0, symSize: 0x10 }
- { offsetInCU: 0x157, offset: 0x434B9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x80, symBinAddr: 0x10AB0, symSize: 0x1E0 }
- { offsetInCU: 0x287, offset: 0x435E9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x260, symBinAddr: 0x10C90, symSize: 0x10 }
- { offsetInCU: 0x2B2, offset: 0x43614, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x270, symBinAddr: 0x10CA0, symSize: 0x10 }
- { offsetInCU: 0x2E3, offset: 0x43645, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x280, symBinAddr: 0x10CB0, symSize: 0x40 }
- { offsetInCU: 0x365, offset: 0x436C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x2C0, symBinAddr: 0x10CF0, symSize: 0x30 }
- { offsetInCU: 0x379, offset: 0x436DB, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x300, symBinAddr: 0x10D20, symSize: 0x20 }
- { offsetInCU: 0x38D, offset: 0x436EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x320, symBinAddr: 0x10D40, symSize: 0x40 }
- { offsetInCU: 0x3A1, offset: 0x43703, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x360, symBinAddr: 0x10D80, symSize: 0x50 }
- { offsetInCU: 0x3B5, offset: 0x43717, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x3B0, symBinAddr: 0x10DD0, symSize: 0xA }
- { offsetInCU: 0x27, offset: 0x43808, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x10DE0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x4382C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x10DE0, symSize: 0x10 }
- { offsetInCU: 0x66, offset: 0x43847, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0x10, symBinAddr: 0x10DF0, symSize: 0x20 }
- { offsetInCU: 0xBA, offset: 0x4389B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0x10F10, symSize: 0x10 }
- { offsetInCU: 0xD6, offset: 0x438B7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x140, symBinAddr: 0x10F20, symSize: 0x20 }
- { offsetInCU: 0x10B, offset: 0x438EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x40, symBinAddr: 0x10E20, symSize: 0x10 }
- { offsetInCU: 0x11F, offset: 0x43900, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x50, symBinAddr: 0x10E30, symSize: 0x30 }
- { offsetInCU: 0x149, offset: 0x4392A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x180, symBinAddr: 0x10F40, symSize: 0x80 }
- { offsetInCU: 0x15D, offset: 0x4393E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x200, symBinAddr: 0x10FC0, symSize: 0xD0 }
- { offsetInCU: 0x171, offset: 0x43952, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2D0, symBinAddr: 0x11090, symSize: 0x10 }
- { offsetInCU: 0x185, offset: 0x43966, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2E0, symBinAddr: 0x110A0, symSize: 0x10 }
- { offsetInCU: 0x199, offset: 0x4397A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2F0, symBinAddr: 0x110B0, symSize: 0x10 }
- { offsetInCU: 0x1AD, offset: 0x4398E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x300, symBinAddr: 0x110C0, symSize: 0xA }
- { offsetInCU: 0x1E7, offset: 0x439C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x30, symBinAddr: 0x10E10, symSize: 0x10 }
- { offsetInCU: 0x278, offset: 0x43A59, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0x10E60, symSize: 0x40 }
- { offsetInCU: 0x350, offset: 0x43B31, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC0, symBinAddr: 0x10EA0, symSize: 0x30 }
- { offsetInCU: 0x3CC, offset: 0x43BAD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0x10ED0, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x43D4B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xA0, symBinAddr: 0x11170, symSize: 0x40 }
- { offsetInCU: 0xDE, offset: 0x43D92, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x140, symBinAddr: 0x11210, symSize: 0x40 }
- { offsetInCU: 0xFB, offset: 0x43DAF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1B0, symBinAddr: 0x11280, symSize: 0x10 }
- { offsetInCU: 0x128, offset: 0x43DDC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x1C0, symBinAddr: 0x11290, symSize: 0x60 }
- { offsetInCU: 0x14D, offset: 0x43E01, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x220, symBinAddr: 0x112F0, symSize: 0x4F0 }
- { offsetInCU: 0x563, offset: 0x44217, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x800, symBinAddr: 0x11830, symSize: 0xB0 }
- { offsetInCU: 0x612, offset: 0x442C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x8B0, symBinAddr: 0x118E0, symSize: 0x70 }
- { offsetInCU: 0x6A3, offset: 0x44357, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x920, symBinAddr: 0x11950, symSize: 0x50 }
- { offsetInCU: 0x6E8, offset: 0x4439C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x970, symBinAddr: 0x119A0, symSize: 0xB0 }
- { offsetInCU: 0x797, offset: 0x4444B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0xA20, symBinAddr: 0x11A50, symSize: 0x70 }
- { offsetInCU: 0x828, offset: 0x444DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0xA90, symBinAddr: 0x11AC0, symSize: 0x30 }
- { offsetInCU: 0x882, offset: 0x44536, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0xAC0, symBinAddr: 0x11AF0, symSize: 0x50 }
- { offsetInCU: 0x8C7, offset: 0x4457B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0xB10, symBinAddr: 0x11B40, symSize: 0x60 }
- { offsetInCU: 0x8EC, offset: 0x445A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xB70, symBinAddr: 0x11BA0, symSize: 0x320 }
- { offsetInCU: 0xA27, offset: 0x446DB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xE90, symBinAddr: 0x11EC0, symSize: 0xD0 }
- { offsetInCU: 0xB3B, offset: 0x447EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xF60, symBinAddr: 0x11F90, symSize: 0xD0 }
- { offsetInCU: 0xC4F, offset: 0x44903, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0x10F0, symBinAddr: 0x12120, symSize: 0xD0 }
- { offsetInCU: 0xD63, offset: 0x44A17, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x1220, symBinAddr: 0x12250, symSize: 0xD0 }
- { offsetInCU: 0xE77, offset: 0x44B2B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x12F0, symBinAddr: 0x12320, symSize: 0xD0 }
- { offsetInCU: 0xF8B, offset: 0x44C3F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x13C0, symBinAddr: 0x123F0, symSize: 0xE0 }
- { offsetInCU: 0x109F, offset: 0x44D53, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x14A0, symBinAddr: 0x124D0, symSize: 0xE0 }
- { offsetInCU: 0x11B3, offset: 0x44E67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x1580, symBinAddr: 0x125B0, symSize: 0xE0 }
- { offsetInCU: 0x12E5, offset: 0x44F99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x1660, symBinAddr: 0x12690, symSize: 0xC0 }
- { offsetInCU: 0x1497, offset: 0x4514B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1720, symBinAddr: 0x12750, symSize: 0x60 }
- { offsetInCU: 0x1876, offset: 0x4552A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x1780, symBinAddr: 0x127B0, symSize: 0xD90 }
- { offsetInCU: 0x25A8, offset: 0x4625C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x2510, symBinAddr: 0x13540, symSize: 0x70 }
- { offsetInCU: 0x26D3, offset: 0x46387, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x2580, symBinAddr: 0x135B0, symSize: 0x280 }
- { offsetInCU: 0x29BD, offset: 0x46671, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2800, symBinAddr: 0x13830, symSize: 0x80 }
- { offsetInCU: 0x2AAE, offset: 0x46762, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2880, symBinAddr: 0x138B0, symSize: 0x150 }
- { offsetInCU: 0x2BE9, offset: 0x4689D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x29D0, symBinAddr: 0x13A00, symSize: 0x70 }
- { offsetInCU: 0x2C97, offset: 0x4694B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x2A40, symBinAddr: 0x13A70, symSize: 0x30 }
- { offsetInCU: 0x2CB4, offset: 0x46968, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2A70, symBinAddr: 0x13AA0, symSize: 0x30 }
- { offsetInCU: 0x2D65, offset: 0x46A19, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2AA0, symBinAddr: 0x13AD0, symSize: 0x3D0 }
- { offsetInCU: 0x3221, offset: 0x46ED5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2E70, symBinAddr: 0x13EA0, symSize: 0x70 }
- { offsetInCU: 0x32B5, offset: 0x46F69, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x2EE0, symBinAddr: 0x13F10, symSize: 0x270 }
- { offsetInCU: 0x350A, offset: 0x471BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x3150, symBinAddr: 0x14180, symSize: 0x80 }
- { offsetInCU: 0x35AB, offset: 0x4725F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x31D0, symBinAddr: 0x14200, symSize: 0x140 }
- { offsetInCU: 0x3697, offset: 0x4734B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x3310, symBinAddr: 0x14340, symSize: 0x70 }
- { offsetInCU: 0x36E6, offset: 0x4739A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x3380, symBinAddr: 0x143B0, symSize: 0x80 }
- { offsetInCU: 0x3713, offset: 0x473C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x3400, symBinAddr: 0x14430, symSize: 0x20 }
- { offsetInCU: 0x3741, offset: 0x473F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0x110D0, symSize: 0x40 }
- { offsetInCU: 0x3777, offset: 0x4742B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x40, symBinAddr: 0x11110, symSize: 0x60 }
- { offsetInCU: 0x37AF, offset: 0x47463, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0xE0, symBinAddr: 0x111B0, symSize: 0x60 }
- { offsetInCU: 0x37F2, offset: 0x474A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x180, symBinAddr: 0x11250, symSize: 0x30 }
- { offsetInCU: 0x3929, offset: 0x475DD, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x770, symBinAddr: 0x117E0, symSize: 0x30 }
- { offsetInCU: 0x393D, offset: 0x475F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x7A0, symBinAddr: 0x11810, symSize: 0x20 }
- { offsetInCU: 0x3A4F, offset: 0x47703, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0x1030, symBinAddr: 0x12060, symSize: 0x70 }
- { offsetInCU: 0x3A89, offset: 0x4773D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0x10A0, symBinAddr: 0x120D0, symSize: 0x50 }
- { offsetInCU: 0x3B46, offset: 0x477FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x11C0, symBinAddr: 0x121F0, symSize: 0x60 }
- { offsetInCU: 0x3F7D, offset: 0x47C31, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x3420, symBinAddr: 0x14450, symSize: 0x60 }
- { offsetInCU: 0x3FAD, offset: 0x47C61, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x3530, symBinAddr: 0x144D0, symSize: 0x60 }
- { offsetInCU: 0x3FDD, offset: 0x47C91, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x3590, symBinAddr: 0x14530, symSize: 0x90 }
- { offsetInCU: 0x4011, offset: 0x47CC5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x3620, symBinAddr: 0x145C0, symSize: 0x20 }
- { offsetInCU: 0x4041, offset: 0x47CF5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x3640, symBinAddr: 0x145E0, symSize: 0x90 }
- { offsetInCU: 0x4071, offset: 0x47D25, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x36D0, symBinAddr: 0x14670, symSize: 0x80 }
- { offsetInCU: 0x40A1, offset: 0x47D55, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x3750, symBinAddr: 0x146F0, symSize: 0x50 }
- { offsetInCU: 0x40F5, offset: 0x47DA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x37A0, symBinAddr: 0x14740, symSize: 0x20 }
- { offsetInCU: 0x4129, offset: 0x47DDD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x37C0, symBinAddr: 0x14760, symSize: 0x20 }
- { offsetInCU: 0x415D, offset: 0x47E11, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x37E0, symBinAddr: 0x14780, symSize: 0x20 }
- { offsetInCU: 0x4191, offset: 0x47E45, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x3800, symBinAddr: 0x147A0, symSize: 0x20 }
- { offsetInCU: 0x41BA, offset: 0x47E6E, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3820, symBinAddr: 0x147C0, symSize: 0x30 }
- { offsetInCU: 0x41CE, offset: 0x47E82, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3BF0, symBinAddr: 0x14B90, symSize: 0x130 }
...

@ -0,0 +1,618 @@
#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef DOUSHOUQIMODEL_SWIFT_H
#define DOUSHOUQIMODEL_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="DouShouQiModel",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif
#elif defined(__x86_64__) && __x86_64__
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
#ifndef DOUSHOUQIMODEL_SWIFT_H
#define DOUSHOUQIMODEL_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(objc_modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="DouShouQiModel",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif
#else
#error unsupported Swift architecture
#endif

@ -0,0 +1,18 @@
//
// DouShouQiModel.h
// DouShouQiModel
//
// Created by Marc Chevaldonné on 14/05/2024.
//
#import <Foundation/Foundation.h>
//! Project version number for DouShouQiModel.
FOUNDATION_EXPORT double DouShouQiModelVersionNumber;
//! Project version string for DouShouQiModel.
FOUNDATION_EXPORT const unsigned char DouShouQiModelVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <DouShouQiModel/PublicHeader.h>

@ -0,0 +1,266 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -0,0 +1,266 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target arm64-apple-macos13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -0,0 +1,266 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target x86_64-apple-macos13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -0,0 +1,266 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
// swift-module-flags: -target x86_64-apple-macos13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name DouShouQiModel
// swift-module-flags-ignorable: -enable-bare-slash-regex
@_exported import DouShouQiModel
import Foundation
import Swift
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
public enum Result : Swift.Equatable {
case notFinished
case even
case winner(winner: DouShouQiModel.Owner, reason: DouShouQiModel.WinningReason)
public static func == (a: DouShouQiModel.Result, b: DouShouQiModel.Result) -> Swift.Bool
}
public enum WinningReason {
case denReached, noMorePieces, tooManyOccurences, noMovesLeft
public static func == (a: DouShouQiModel.WinningReason, b: DouShouQiModel.WinningReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
public enum BoardResult : Swift.Equatable {
case unknown
case ok(piece: DouShouQiModel.Piece?)
case failed(reason: DouShouQiModel.BoardFailingReason)
public static func == (a: DouShouQiModel.BoardResult, b: DouShouQiModel.BoardResult) -> Swift.Bool
}
public enum BoardFailingReason {
case unknown, outOfBounds, cellNotEmpty, cellEmpty
public static func == (a: DouShouQiModel.BoardFailingReason, b: DouShouQiModel.BoardFailingReason) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class HumanPlayer : DouShouQiModel.Player {
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner, andInputMethod input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
public func changeInput(input: @escaping (_ hp: DouShouQiModel.HumanPlayer) -> DouShouQiModel.Move?)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(_ move: DouShouQiModel.Move?) async throws
#endif
@objc deinit
}
public struct ClassicRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public struct Cell : Swift.CustomStringConvertible, Swift.Equatable {
public var description: Swift.String {
get
}
public let cellType: DouShouQiModel.CellType
public let initialOwner: DouShouQiModel.Owner
public var piece: DouShouQiModel.Piece?
public init(ofType cellType: DouShouQiModel.CellType, ownedBy initialOwner: DouShouQiModel.Owner = .noOne, withPiece piece: DouShouQiModel.Piece? = nil)
public static func == (a: DouShouQiModel.Cell, b: DouShouQiModel.Cell) -> Swift.Bool
}
public struct VerySimpleRules : DouShouQiModel.Rules {
public static func createBoard() -> DouShouQiModel.Board
public static func checkBoard(_ board: DouShouQiModel.Board) throws
public init()
public init(occurences: [DouShouQiModel.Board : Swift.Int], historic: [DouShouQiModel.Move])
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
public func getMoves(in board: DouShouQiModel.Board, of owner: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
public func isMoveValid(onBoard board: DouShouQiModel.Board, fromRow originRow: Swift.Int, andFromColumn originColumn: Swift.Int, toRow destinationRow: Swift.Int, andToColumn destinationColumn: Swift.Int) -> Swift.Bool
public func isMoveValid(onBoard board: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
public func isGameOver(withBoard board: DouShouQiModel.Board, andLastRowPlayed lastRow: Swift.Int, andLastColumnPlayer lastColumn: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
public mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
public func getNextPlayer() -> DouShouQiModel.Owner
public var occurences: [DouShouQiModel.Board : Swift.Int] {
get
}
public var historic: [DouShouQiModel.Move] {
get
}
}
public protocol Rules {
static func createBoard() -> DouShouQiModel.Board
static func checkBoard(_ board: DouShouQiModel.Board) throws
func getNextPlayer() -> DouShouQiModel.Owner
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner) -> [DouShouQiModel.Move]
func getMoves(in board: DouShouQiModel.Board, of: DouShouQiModel.Owner, fromRow row: Swift.Int, andColumn col: Swift.Int) -> [DouShouQiModel.Move]
func isMoveValid(onBoard: DouShouQiModel.Board, fromRow: Swift.Int, andFromColumn: Swift.Int, toRow: Swift.Int, andToColumn: Swift.Int) -> Swift.Bool
func isMoveValid(onBoard: DouShouQiModel.Board, withMove move: DouShouQiModel.Move) -> Swift.Bool
func isGameOver(withBoard: DouShouQiModel.Board, andLastRowPlayed: Swift.Int, andLastColumnPlayer: Swift.Int) -> (Swift.Bool, DouShouQiModel.Result)
mutating func playedMove(_ move: DouShouQiModel.Move, onStartingBoard board: DouShouQiModel.Board, andResultingBoard resultingBoard: DouShouQiModel.Board) throws
var occurences: [DouShouQiModel.Board : Swift.Int] { get }
var historic: [DouShouQiModel.Move] { get }
}
public class Player {
final public let name: Swift.String
final public let id: DouShouQiModel.Owner
public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
#if compiler(>=5.3) && $AsyncAwait
public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addPlayedCallbacksListener(_ listener: @escaping (DouShouQiModel.Move?, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func notifyPlayed(withMove move: DouShouQiModel.Move?, andPlayer player: DouShouQiModel.Player) async throws
#endif
@objc deinit
}
public enum GameError : Swift.Error {
case invalidMove, nextPlayerError, badPlayerId(message: Swift.String), invalidRules, invalidPlayer, invalidGame, invalidBoard
}
@_inheritsConvenienceInitializers public class RandomPlayer : DouShouQiModel.IAPlayer {
#if compiler(>=5.3) && $AsyncAwait
override public func chooseMove(in board: DouShouQiModel.Board, with rules: any DouShouQiModel.Rules) async throws
#endif
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public enum CellType : Swift.CaseIterable {
case unknown, jungle, water, trap, den
public static func == (a: DouShouQiModel.CellType, b: DouShouQiModel.CellType) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public typealias AllCases = [DouShouQiModel.CellType]
public static var allCases: [DouShouQiModel.CellType] {
get
}
public var hashValue: Swift.Int {
get
}
}
public struct Board : Swift.Hashable {
public func hash(into hasher: inout Swift.Hasher)
public let nbRows: Swift.Int
public let nbColumns: Swift.Int
public var grid: [[DouShouQiModel.Cell]] {
get
}
public init?(withGrid grid: [[DouShouQiModel.Cell]])
public func countPieces(of owner: DouShouQiModel.Owner) -> Swift.Int
public func countPieces() -> (nbOfPiecesOfPlayer1: Swift.Int, nbOfPiecesOfPlayer2: Swift.Int)
public mutating func insert(piece: DouShouQiModel.Piece, atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public mutating func removePiece(atRow row: Swift.Int, andColumn column: Swift.Int) -> DouShouQiModel.BoardResult
public static func == (a: DouShouQiModel.Board, b: DouShouQiModel.Board) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public struct Piece : Swift.CustomStringConvertible, Swift.Hashable {
public var description: Swift.String {
get
}
public let owner: DouShouQiModel.Owner
public let animal: DouShouQiModel.Animal
public init(withOwner owner: DouShouQiModel.Owner, andAnimal animal: DouShouQiModel.Animal)
public func hash(into hasher: inout Swift.Hasher)
public static func == (a: DouShouQiModel.Piece, b: DouShouQiModel.Piece) -> Swift.Bool
public var hashValue: Swift.Int {
get
}
}
public enum InvalidBoardError : Swift.Error, Swift.Equatable {
case unknownError
case badDimensions(nbRows: Swift.Int, nbColumns: Swift.Int)
case badCellType(cellType: DouShouQiModel.CellType, row: Swift.Int, column: Swift.Int)
case multipleOccurenceOfSamePiece(piece: DouShouQiModel.Piece)
case pieceWithNoOwner(piece: DouShouQiModel.Piece)
case pieceNotAllowedOnThisCell(piece: DouShouQiModel.Piece, cell: DouShouQiModel.Cell)
public static func == (a: DouShouQiModel.InvalidBoardError, b: DouShouQiModel.InvalidBoardError) -> Swift.Bool
}
public enum Owner {
case noOne, player1, player2
public var simpleDescription: Swift.String {
get
}
public static func == (a: DouShouQiModel.Owner, b: DouShouQiModel.Owner) -> Swift.Bool
public func hash(into hasher: inout Swift.Hasher)
public var hashValue: Swift.Int {
get
}
}
@_inheritsConvenienceInitializers public class IAPlayer : DouShouQiModel.Player {
override public init?(withName name: Swift.String, andId id: DouShouQiModel.Owner)
@objc deinit
}
public struct Move : Swift.CustomStringConvertible, Swift.Equatable {
public let owner: DouShouQiModel.Owner
public let rowOrigin: Swift.Int
public let columnOrigin: Swift.Int
public let rowDestination: Swift.Int
public let columnDestination: Swift.Int
public init(of owner: DouShouQiModel.Owner, fromRow rowOrigin: Swift.Int, andFromColumn colOrigin: Swift.Int, toRow rowDest: Swift.Int, andToColumn colDest: Swift.Int)
public var description: Swift.String {
get
}
public static func == (a: DouShouQiModel.Move, b: DouShouQiModel.Move) -> Swift.Bool
}
public enum Animal : Swift.Int {
case rat, cat, dog, wolf, leopard, tiger, lion, elephant
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
public class Game {
public var board: DouShouQiModel.Board {
get
}
public var rules: any DouShouQiModel.Rules {
get
}
final public let players: [DouShouQiModel.Owner : DouShouQiModel.Player]
public init(withRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public init(withBoard board: DouShouQiModel.Board, andRules rules: any DouShouQiModel.Rules, andPlayer1 player1: DouShouQiModel.Player, andPlayer2 player2: DouShouQiModel.Player) throws
public func addGameStartedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func addPlayerNotifiedListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Player) async throws -> Swift.Void)
#endif
#if compiler(>=5.3) && $AsyncAwait
public func addGameChangedListener(_ listener: @escaping (DouShouQiModel.Game) async -> Swift.Void)
#endif
public func addGameOverListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Result, DouShouQiModel.Player?) -> Swift.Void)
public func addMoveChosenCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player) -> Swift.Void)
public func addInvalidMoveCallbacksListener(_ listener: @escaping (DouShouQiModel.Board, DouShouQiModel.Move, DouShouQiModel.Player, Swift.Bool) -> Swift.Void)
public func addBoardChangedListener(_ listener: @escaping (DouShouQiModel.Board) -> Swift.Void)
public func addPieceRemovedListener(_ listener: @escaping (Swift.Int, Swift.Int, DouShouQiModel.Piece) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
public func onPlayed(with move: DouShouQiModel.Move?, from player: DouShouQiModel.Player) async throws
#endif
public var isOver: Swift.Bool {
get
}
#if compiler(>=5.3) && $AsyncAwait
public func start() async throws
#endif
@objc deinit
}
extension DouShouQiModel.WinningReason : Swift.Equatable {}
extension DouShouQiModel.WinningReason : Swift.Hashable {}
extension DouShouQiModel.BoardFailingReason : Swift.Equatable {}
extension DouShouQiModel.BoardFailingReason : Swift.Hashable {}
extension DouShouQiModel.CellType : Swift.Equatable {}
extension DouShouQiModel.CellType : Swift.Hashable {}
extension DouShouQiModel.Owner : Swift.Equatable {}
extension DouShouQiModel.Owner : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.Equatable {}
extension DouShouQiModel.Animal : Swift.Hashable {}
extension DouShouQiModel.Animal : Swift.RawRepresentable {}

@ -0,0 +1,11 @@
framework module DouShouQiModel {
umbrella header "DouShouQiModel.h"
export *
module * { export * }
}
module DouShouQiModel.Swift {
header "DouShouQiModel-Swift.h"
requires objc
}

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>23E224</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>DouShouQiModel</string>
<key>CFBundleIdentifier</key>
<string>fr.uca.iut.DouShouQiModel</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>DouShouQiModel</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string></string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>14.2</string>
<key>DTSDKBuild</key>
<string>23C53</string>
<key>DTSDKName</key>
<string>macosx14.2</string>
<key>DTXcode</key>
<string>1520</string>
<key>DTXcodeBuild</key>
<string>15C500b</string>
<key>LSMinimumSystemVersion</key>
<string>13.0</string>
</dict>
</plist>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.fr.uca.iut.DouShouQiModel</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

@ -0,0 +1,505 @@
---
triple: 'arm64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/Versions/A/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x84A45, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x14E10, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x84A7A, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x14E48, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x84AB7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4CD8, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x84ADB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x4CD8, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x84AFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4CF0, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x84B1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x4CF0, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x84B2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x4E20, symSize: 0x68 }
- { offsetInCU: 0xDD, offset: 0x84B6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x4CDC, symSize: 0x14 }
- { offsetInCU: 0x110, offset: 0x84BA0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x4CF4, symSize: 0x28 }
- { offsetInCU: 0x1A6, offset: 0x84C36, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x4D1C, symSize: 0x44 }
- { offsetInCU: 0x2A0, offset: 0x84D30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x4D60, symSize: 0x14 }
- { offsetInCU: 0x2C0, offset: 0x84D50, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x4D60, symSize: 0x14 }
- { offsetInCU: 0x300, offset: 0x84D90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x4D74, symSize: 0x44 }
- { offsetInCU: 0x3E3, offset: 0x84E73, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x4DB8, symSize: 0x28 }
- { offsetInCU: 0x46C, offset: 0x84EFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x4E88, symSize: 0x4 }
- { offsetInCU: 0x480, offset: 0x84F10, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x1B4, symBinAddr: 0x4E8C, symSize: 0x44 }
- { offsetInCU: 0x494, offset: 0x84F24, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1F8, symBinAddr: 0x4ED0, symSize: 0xC }
- { offsetInCU: 0x4A8, offset: 0x84F38, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x204, symBinAddr: 0x4EDC, symSize: 0x4 }
- { offsetInCU: 0x4BC, offset: 0x84F4C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x208, symBinAddr: 0x4EE0, symSize: 0xAC }
- { offsetInCU: 0x4D0, offset: 0x84F60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x2B4, symBinAddr: 0x4F8C, symSize: 0xC4 }
- { offsetInCU: 0x4E4, offset: 0x84F74, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x378, symBinAddr: 0x5050, symSize: 0x14 }
- { offsetInCU: 0x4F8, offset: 0x84F88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x38C, symBinAddr: 0x5064, symSize: 0x4 }
- { offsetInCU: 0x50C, offset: 0x84F9C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x390, symBinAddr: 0x5068, symSize: 0x24 }
- { offsetInCU: 0x520, offset: 0x84FB0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3B4, symBinAddr: 0x508C, symSize: 0x10 }
- { offsetInCU: 0x534, offset: 0x84FC4, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3C4, symBinAddr: 0x509C, symSize: 0xC }
- { offsetInCU: 0x548, offset: 0x84FD8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3D0, symBinAddr: 0x50A8, symSize: 0x90 }
- { offsetInCU: 0x55C, offset: 0x84FEC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x460, symBinAddr: 0x5138, symSize: 0xBC }
- { offsetInCU: 0x570, offset: 0x85000, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x51C, symBinAddr: 0x51F4, symSize: 0x8 }
- { offsetInCU: 0x584, offset: 0x85014, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x524, symBinAddr: 0x51FC, symSize: 0x4 }
- { offsetInCU: 0x598, offset: 0x85028, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x528, symBinAddr: 0x5200, symSize: 0x8 }
- { offsetInCU: 0x5AC, offset: 0x8503C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x530, symBinAddr: 0x5208, symSize: 0x10 }
- { offsetInCU: 0x628, offset: 0x850B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x4DE0, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x851FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x5218, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x85220, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x5218, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x85243, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x5230, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x85263, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18, symBinAddr: 0x5230, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x85274, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x148, symBinAddr: 0x5360, symSize: 0x7C }
- { offsetInCU: 0xF5, offset: 0x852CA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x4, symBinAddr: 0x521C, symSize: 0x14 }
- { offsetInCU: 0x128, offset: 0x852FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C, symBinAddr: 0x5234, symSize: 0x28 }
- { offsetInCU: 0x1BE, offset: 0x85393, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x44, symBinAddr: 0x525C, symSize: 0x44 }
- { offsetInCU: 0x2B8, offset: 0x8548D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x52A0, symSize: 0x14 }
- { offsetInCU: 0x2D8, offset: 0x854AD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x88, symBinAddr: 0x52A0, symSize: 0x14 }
- { offsetInCU: 0x318, offset: 0x854ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0x9C, symBinAddr: 0x52B4, symSize: 0x44 }
- { offsetInCU: 0x3FB, offset: 0x855D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x52F8, symSize: 0x28 }
- { offsetInCU: 0x484, offset: 0x85659, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1C4, symBinAddr: 0x53DC, symSize: 0x4 }
- { offsetInCU: 0x498, offset: 0x8566D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1C8, symBinAddr: 0x53E0, symSize: 0x44 }
- { offsetInCU: 0x4AC, offset: 0x85681, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x20C, symBinAddr: 0x5424, symSize: 0x14 }
- { offsetInCU: 0x4C0, offset: 0x85695, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x224, symBinAddr: 0x5438, symSize: 0x74 }
- { offsetInCU: 0x4D4, offset: 0x856A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x298, symBinAddr: 0x54AC, symSize: 0x8C }
- { offsetInCU: 0x4E8, offset: 0x856BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x324, symBinAddr: 0x5538, symSize: 0x18 }
- { offsetInCU: 0x4FC, offset: 0x856D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x33C, symBinAddr: 0x5550, symSize: 0x4 }
- { offsetInCU: 0x510, offset: 0x856E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x340, symBinAddr: 0x5554, symSize: 0x18 }
- { offsetInCU: 0x524, offset: 0x856F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x358, symBinAddr: 0x556C, symSize: 0x10 }
- { offsetInCU: 0x538, offset: 0x8570D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x374, symBinAddr: 0x557C, symSize: 0x90 }
- { offsetInCU: 0x54C, offset: 0x85721, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x404, symBinAddr: 0x560C, symSize: 0xBC }
- { offsetInCU: 0x560, offset: 0x85735, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x56C8, symSize: 0x8 }
- { offsetInCU: 0x574, offset: 0x85749, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4C8, symBinAddr: 0x56D0, symSize: 0x4 }
- { offsetInCU: 0x588, offset: 0x8575D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4CC, symBinAddr: 0x56D4, symSize: 0x8 }
- { offsetInCU: 0x59C, offset: 0x85771, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4D4, symBinAddr: 0x56DC, symSize: 0x10 }
- { offsetInCU: 0x5FC, offset: 0x857D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x108, symBinAddr: 0x5320, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x85901, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x56EC, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x85973, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x56EC, symSize: 0xD0 }
- { offsetInCU: 0xEE, offset: 0x859C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x57BC, symSize: 0xB0 }
- { offsetInCU: 0x189, offset: 0x85A63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x587C, symSize: 0xA0 }
- { offsetInCU: 0x1DE, offset: 0x85AB8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x591C, symSize: 0x70 }
- { offsetInCU: 0x22D, offset: 0x85B07, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x598C, symSize: 0xC }
- { offsetInCU: 0x2A9, offset: 0x85B83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2AC, symBinAddr: 0x5998, symSize: 0x38 }
- { offsetInCU: 0x310, offset: 0x85BEA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x2E4, symBinAddr: 0x59D0, symSize: 0x2C }
- { offsetInCU: 0x384, offset: 0x85C5E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x310, symBinAddr: 0x59FC, symSize: 0x108 }
- { offsetInCU: 0x507, offset: 0x85DE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x418, symBinAddr: 0x5B04, symSize: 0x70 }
- { offsetInCU: 0x5BF, offset: 0x85E99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x488, symBinAddr: 0x5B74, symSize: 0x100 }
- { offsetInCU: 0x6AE, offset: 0x85F88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x588, symBinAddr: 0x5C74, symSize: 0x40 }
- { offsetInCU: 0x70C, offset: 0x85FE6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x5D0, symBinAddr: 0x5CBC, symSize: 0x2C }
- { offsetInCU: 0x75D, offset: 0x86037, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x5FC, symBinAddr: 0x5CE8, symSize: 0x34 }
- { offsetInCU: 0x87E, offset: 0x86158, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x180, symBinAddr: 0x586C, symSize: 0x10 }
- { offsetInCU: 0x92D, offset: 0x86207, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x5C8, symBinAddr: 0x5CB4, symSize: 0x8 }
- { offsetInCU: 0x95A, offset: 0x86234, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x630, symBinAddr: 0x5D1C, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x863DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x29998, symBinAddr: 0x1DB40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x863F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x6D30, symBinAddr: 0x1C720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x86464, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D38, symBinAddr: 0x1C728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x8647E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x6D40, symBinAddr: 0x1C730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x86498, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x6D48, symBinAddr: 0x1C738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x864B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x299A0, symBinAddr: 0x1DB48, symSize: 0x0 }
- { offsetInCU: 0x284, offset: 0x86611, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x5E08, symSize: 0x2DC }
- { offsetInCU: 0xA99, offset: 0x86E26, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2DC, symBinAddr: 0x60E4, symSize: 0x78 }
- { offsetInCU: 0xAD7, offset: 0x86E64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x354, symBinAddr: 0x615C, symSize: 0x14 }
- { offsetInCU: 0xB01, offset: 0x86E8E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x3AC, symBinAddr: 0x61B4, symSize: 0x30 }
- { offsetInCU: 0xB41, offset: 0x86ECE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3DC, symBinAddr: 0x61E4, symSize: 0x78 }
- { offsetInCU: 0xB93, offset: 0x86F20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x6A8, symBinAddr: 0x64B0, symSize: 0x30 }
- { offsetInCU: 0xBD8, offset: 0x86F65, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x6D8, symBinAddr: 0x64E0, symSize: 0x54 }
- { offsetInCU: 0xC3D, offset: 0x86FCA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x72C, symBinAddr: 0x6534, symSize: 0x458 }
- { offsetInCU: 0x15D4, offset: 0x87961, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB84, symBinAddr: 0x698C, symSize: 0x62C }
- { offsetInCU: 0x1FE8, offset: 0x88375, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x11B0, symBinAddr: 0x6FB8, symSize: 0x5F8 }
- { offsetInCU: 0x295A, offset: 0x88CE7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x17A8, symBinAddr: 0x75B0, symSize: 0x6C4 }
- { offsetInCU: 0x340F, offset: 0x8979C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1E6C, symBinAddr: 0x7C74, symSize: 0x44C }
- { offsetInCU: 0x3A6C, offset: 0x89DF9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x22B8, symBinAddr: 0x80C0, symSize: 0x300 }
- { offsetInCU: 0x3FE8, offset: 0x8A375, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x25B8, symBinAddr: 0x83C0, symSize: 0x56C }
- { offsetInCU: 0x491C, offset: 0x8ACA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B24, symBinAddr: 0x892C, symSize: 0x12C }
- { offsetInCU: 0x4AEC, offset: 0x8AE79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2C50, symBinAddr: 0x8A58, symSize: 0x140 }
- { offsetInCU: 0x4D56, offset: 0x8B0E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x2D90, symBinAddr: 0x8B98, symSize: 0xA0 }
- { offsetInCU: 0x4E40, offset: 0x8B1CD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x2E30, symBinAddr: 0x8C38, symSize: 0x104 }
- { offsetInCU: 0x50CF, offset: 0x8B45C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x2F34, symBinAddr: 0x8D3C, symSize: 0x3C }
- { offsetInCU: 0x51E0, offset: 0x8B56D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x2F70, symBinAddr: 0x8D78, symSize: 0x188 }
- { offsetInCU: 0x537E, offset: 0x8B70B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x30F8, symBinAddr: 0x8F00, symSize: 0x424 }
- { offsetInCU: 0x5879, offset: 0x8BC06, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x351C, symBinAddr: 0x9324, symSize: 0x8 }
- { offsetInCU: 0x588D, offset: 0x8BC1A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3524, symBinAddr: 0x932C, symSize: 0x8 }
- { offsetInCU: 0x58BF, offset: 0x8BC4C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x352C, symBinAddr: 0x9334, symSize: 0x78 }
- { offsetInCU: 0x590C, offset: 0x8BC99, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x35A4, symBinAddr: 0x93AC, symSize: 0x14 }
- { offsetInCU: 0x5944, offset: 0x8BCD1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x35B8, symBinAddr: 0x93C0, symSize: 0x4 }
- { offsetInCU: 0x5960, offset: 0x8BCED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x35BC, symBinAddr: 0x93C4, symSize: 0x14 }
- { offsetInCU: 0x597C, offset: 0x8BD09, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x35D0, symBinAddr: 0x93D8, symSize: 0x14 }
- { offsetInCU: 0x5998, offset: 0x8BD25, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x35E4, symBinAddr: 0x93EC, symSize: 0x4 }
- { offsetInCU: 0x59B4, offset: 0x8BD41, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x35E8, symBinAddr: 0x93F0, symSize: 0x4 }
- { offsetInCU: 0x59D0, offset: 0x8BD5D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x35EC, symBinAddr: 0x93F4, symSize: 0x4 }
- { offsetInCU: 0x59EC, offset: 0x8BD79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x35F0, symBinAddr: 0x93F8, symSize: 0x14 }
- { offsetInCU: 0x5A21, offset: 0x8BDAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x940C, symSize: 0x8 }
- { offsetInCU: 0x5A41, offset: 0x8BDCE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3604, symBinAddr: 0x940C, symSize: 0x8 }
- { offsetInCU: 0x5A66, offset: 0x8BDF3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x9414, symSize: 0x8 }
- { offsetInCU: 0x5A86, offset: 0x8BE13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x360C, symBinAddr: 0x9414, symSize: 0x8 }
- { offsetInCU: 0x5A99, offset: 0x8BE26, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5710, symBinAddr: 0xB518, symSize: 0x28C }
- { offsetInCU: 0x5E0F, offset: 0x8C19C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x599C, symBinAddr: 0xB7A4, symSize: 0x3A8 }
- { offsetInCU: 0x629F, offset: 0x8C62C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5D44, symBinAddr: 0xBB4C, symSize: 0x15C }
- { offsetInCU: 0x6492, offset: 0x8C81F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x5EA0, symBinAddr: 0xBCA8, symSize: 0x178 }
- { offsetInCU: 0x6572, offset: 0x8C8FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6018, symBinAddr: 0xBE20, symSize: 0xDC }
- { offsetInCU: 0x6689, offset: 0x8CA16, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x368, symBinAddr: 0x6170, symSize: 0x14 }
- { offsetInCU: 0x66A3, offset: 0x8CA30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x37C, symBinAddr: 0x6184, symSize: 0x30 }
- { offsetInCU: 0x66D9, offset: 0x8CA66, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x454, symBinAddr: 0x625C, symSize: 0x30 }
- { offsetInCU: 0x66F3, offset: 0x8CA80, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x510, symBinAddr: 0x6318, symSize: 0x14 }
- { offsetInCU: 0x670D, offset: 0x8CA9A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x524, symBinAddr: 0x632C, symSize: 0x24 }
- { offsetInCU: 0x6C29, offset: 0x8CFB6, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3614, symBinAddr: 0x941C, symSize: 0xB0 }
- { offsetInCU: 0x6C9E, offset: 0x8D02B, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x36C4, symBinAddr: 0x94CC, symSize: 0x70 }
- { offsetInCU: 0x6CCB, offset: 0x8D058, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3734, symBinAddr: 0x953C, symSize: 0x3C }
- { offsetInCU: 0x6D0E, offset: 0x8D09B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3770, symBinAddr: 0x9578, symSize: 0x64 }
- { offsetInCU: 0x6D86, offset: 0x8D113, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x37D4, symBinAddr: 0x95DC, symSize: 0xE0 }
- { offsetInCU: 0x6EBE, offset: 0x8D24B, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x38B4, symBinAddr: 0x96BC, symSize: 0x20 }
- { offsetInCU: 0x6EE1, offset: 0x8D26E, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x38D4, symBinAddr: 0x96DC, symSize: 0x10 }
- { offsetInCU: 0x6F24, offset: 0x8D2B1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x38E4, symBinAddr: 0x96EC, symSize: 0xC8 }
- { offsetInCU: 0x6F8C, offset: 0x8D319, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x39AC, symBinAddr: 0x97B4, symSize: 0xE0 }
- { offsetInCU: 0x6FE2, offset: 0x8D36F, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3A8C, symBinAddr: 0x9894, symSize: 0x78 }
- { offsetInCU: 0x704F, offset: 0x8D3DC, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3B6C, symBinAddr: 0x9974, symSize: 0x1C0 }
- { offsetInCU: 0x7179, offset: 0x8D506, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3D2C, symBinAddr: 0x9B34, symSize: 0x54 }
- { offsetInCU: 0x724A, offset: 0x8D5D7, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3D80, symBinAddr: 0x9B88, symSize: 0x260 }
- { offsetInCU: 0x740A, offset: 0x8D797, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4080, symBinAddr: 0x9E88, symSize: 0x1B0 }
- { offsetInCU: 0x748B, offset: 0x8D818, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4230, symBinAddr: 0xA038, symSize: 0x1C8 }
- { offsetInCU: 0x7525, offset: 0x8D8B2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x43F8, symBinAddr: 0xA200, symSize: 0x358 }
- { offsetInCU: 0x76A4, offset: 0x8DA31, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4750, symBinAddr: 0xA558, symSize: 0x344 }
- { offsetInCU: 0x77B7, offset: 0x8DB44, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4A94, symBinAddr: 0xA89C, symSize: 0x154 }
- { offsetInCU: 0x79C2, offset: 0x8DD4F, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4BE8, symBinAddr: 0xA9F0, symSize: 0x180 }
- { offsetInCU: 0x7BD8, offset: 0x8DF65, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4D68, symBinAddr: 0xAB70, symSize: 0x190 }
- { offsetInCU: 0x7C3C, offset: 0x8DFC9, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x4EF8, symBinAddr: 0xAD00, symSize: 0x298 }
- { offsetInCU: 0x7E42, offset: 0x8E1CF, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5190, symBinAddr: 0xAF98, symSize: 0x33C }
- { offsetInCU: 0x8072, offset: 0x8E3FF, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x54CC, symBinAddr: 0xB2D4, symSize: 0x1C }
- { offsetInCU: 0x808A, offset: 0x8E417, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x54E8, symBinAddr: 0xB2F0, symSize: 0x1C }
- { offsetInCU: 0x80D9, offset: 0x8E466, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5504, symBinAddr: 0xB30C, symSize: 0x110 }
- { offsetInCU: 0x8231, offset: 0x8E5BE, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5614, symBinAddr: 0xB41C, symSize: 0xFC }
- { offsetInCU: 0x84A2, offset: 0x8E82F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x62EC, symBinAddr: 0xC0F4, symSize: 0x44 }
- { offsetInCU: 0x84B6, offset: 0x8E843, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6330, symBinAddr: 0xC138, symSize: 0x44 }
- { offsetInCU: 0x84CA, offset: 0x8E857, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6374, symBinAddr: 0xC17C, symSize: 0x34 }
- { offsetInCU: 0x84DE, offset: 0x8E86B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x63A8, symBinAddr: 0xC1B0, symSize: 0x28 }
- { offsetInCU: 0x84F2, offset: 0x8E87F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x63D0, symBinAddr: 0xC1D8, symSize: 0x34 }
- { offsetInCU: 0x8506, offset: 0x8E893, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6404, symBinAddr: 0xC20C, symSize: 0x5C }
- { offsetInCU: 0x851A, offset: 0x8E8A7, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6460, symBinAddr: 0xC268, symSize: 0xC }
- { offsetInCU: 0x852E, offset: 0x8E8BB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x646C, symBinAddr: 0xC274, symSize: 0x44 }
- { offsetInCU: 0x8542, offset: 0x8E8CF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x64B0, symBinAddr: 0xC2B8, symSize: 0x48 }
- { offsetInCU: 0x8556, offset: 0x8E8E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x64F8, symBinAddr: 0xC300, symSize: 0x3C }
- { offsetInCU: 0x856A, offset: 0x8E8F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6534, symBinAddr: 0xC33C, symSize: 0x10 }
- { offsetInCU: 0x857E, offset: 0x8E90B, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6544, symBinAddr: 0xC34C, symSize: 0x40 }
- { offsetInCU: 0x8642, offset: 0x8E9CF, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6684, symBinAddr: 0xC48C, symSize: 0x178 }
- { offsetInCU: 0x8713, offset: 0x8EAA0, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x67FC, symBinAddr: 0xC604, symSize: 0xC0 }
- { offsetInCU: 0x8927, offset: 0x8ECB4, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x548, symBinAddr: 0x6350, symSize: 0x4C }
- { offsetInCU: 0x8943, offset: 0x8ECD0, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x594, symBinAddr: 0x639C, symSize: 0x30 }
- { offsetInCU: 0x89EF, offset: 0x8ED7C, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5C4, symBinAddr: 0x63CC, symSize: 0xE4 }
- { offsetInCU: 0x8F81, offset: 0x8F30E, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x60F4, symBinAddr: 0xBEFC, symSize: 0x100 }
- { offsetInCU: 0x90B3, offset: 0x8F440, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x61F4, symBinAddr: 0xBFFC, symSize: 0xF8 }
- { offsetInCU: 0x9203, offset: 0x8F590, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6584, symBinAddr: 0xC38C, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x8F8E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xCAE0, symSize: 0x1C }
- { offsetInCU: 0x4B, offset: 0x8F909, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xCAE0, symSize: 0x1C }
- { offsetInCU: 0x9A, offset: 0x8F958, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x1C, symBinAddr: 0xCAFC, symSize: 0xF0 }
- { offsetInCU: 0x1DF, offset: 0x8FA9D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x10C, symBinAddr: 0xCBEC, symSize: 0xC }
- { offsetInCU: 0x1FD, offset: 0x8FABB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x118, symBinAddr: 0xCBF8, symSize: 0xC }
- { offsetInCU: 0x21B, offset: 0x8FAD9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x124, symBinAddr: 0xCC04, symSize: 0xC }
- { offsetInCU: 0x239, offset: 0x8FAF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x130, symBinAddr: 0xCC10, symSize: 0xC }
- { offsetInCU: 0x277, offset: 0x8FB35, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x13C, symBinAddr: 0xCC1C, symSize: 0x10 }
- { offsetInCU: 0x2A5, offset: 0x8FB63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x14C, symBinAddr: 0xCC2C, symSize: 0x4 }
- { offsetInCU: 0x2D0, offset: 0x8FB8E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x150, symBinAddr: 0xCC30, symSize: 0x4 }
- { offsetInCU: 0x2E4, offset: 0x8FBA2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0xCC34, symSize: 0x4 }
- { offsetInCU: 0x30F, offset: 0x8FBCD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0xCC38, symSize: 0x4 }
- { offsetInCU: 0x32F, offset: 0x8FBED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x158, symBinAddr: 0xCC38, symSize: 0x4 }
- { offsetInCU: 0x340, offset: 0x8FBFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x15C, symBinAddr: 0xCC3C, symSize: 0x58 }
- { offsetInCU: 0x3B4, offset: 0x8FC72, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x1B4, symBinAddr: 0xCC94, symSize: 0xC }
- { offsetInCU: 0x3C8, offset: 0x8FC86, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x1C4, symBinAddr: 0xCCA0, symSize: 0x44 }
- { offsetInCU: 0x3DC, offset: 0x8FC9A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x208, symBinAddr: 0xCCE4, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x8FCAE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x248, symBinAddr: 0xCD24, symSize: 0x10 }
- { offsetInCU: 0x2B, offset: 0x8FDBC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xCD34, symSize: 0x1A4 }
- { offsetInCU: 0x4F, offset: 0x8FDE0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xB330, symBinAddr: 0x1DB50, symSize: 0x0 }
- { offsetInCU: 0x1A2, offset: 0x8FF33, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xCD34, symSize: 0x1A4 }
- { offsetInCU: 0x582, offset: 0x90313, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x1A4, symBinAddr: 0xCED8, symSize: 0x78 }
- { offsetInCU: 0x5C0, offset: 0x90351, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x21C, symBinAddr: 0xCF50, symSize: 0x14 }
- { offsetInCU: 0x5DB, offset: 0x9036C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x230, symBinAddr: 0xCF64, symSize: 0x30 }
- { offsetInCU: 0x61F, offset: 0x903B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x260, symBinAddr: 0xCF94, symSize: 0x54 }
- { offsetInCU: 0x683, offset: 0x90414, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2B4, symBinAddr: 0xCFE8, symSize: 0x17C }
- { offsetInCU: 0x99E, offset: 0x9072F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x430, symBinAddr: 0xD164, symSize: 0x29C }
- { offsetInCU: 0xCE8, offset: 0x90A79, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6CC, symBinAddr: 0xD400, symSize: 0xA0 }
- { offsetInCU: 0xDF9, offset: 0x90B8A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x76C, symBinAddr: 0xD4A0, symSize: 0x10C }
- { offsetInCU: 0x1033, offset: 0x90DC4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x878, symBinAddr: 0xD5AC, symSize: 0x3C }
- { offsetInCU: 0x1143, offset: 0x90ED4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x8B4, symBinAddr: 0xD5E8, symSize: 0x11C }
- { offsetInCU: 0x12BB, offset: 0x9104C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x9D0, symBinAddr: 0xD704, symSize: 0x1E4 }
- { offsetInCU: 0x1477, offset: 0x91208, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBB4, symBinAddr: 0xD8E8, symSize: 0x8 }
- { offsetInCU: 0x148B, offset: 0x9121C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBBC, symBinAddr: 0xD8F0, symSize: 0x8 }
- { offsetInCU: 0x14BD, offset: 0x9124E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBC4, symBinAddr: 0xD8F8, symSize: 0x78 }
- { offsetInCU: 0x150A, offset: 0x9129B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC3C, symBinAddr: 0xD970, symSize: 0x14 }
- { offsetInCU: 0x1542, offset: 0x912D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC50, symBinAddr: 0xD984, symSize: 0x4 }
- { offsetInCU: 0x155E, offset: 0x912EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC54, symBinAddr: 0xD988, symSize: 0x14 }
- { offsetInCU: 0x157A, offset: 0x9130B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC68, symBinAddr: 0xD99C, symSize: 0x14 }
- { offsetInCU: 0x1596, offset: 0x91327, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xC7C, symBinAddr: 0xD9B0, symSize: 0x4 }
- { offsetInCU: 0x15B2, offset: 0x91343, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xC80, symBinAddr: 0xD9B4, symSize: 0x4 }
- { offsetInCU: 0x15CE, offset: 0x9135F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xC84, symBinAddr: 0xD9B8, symSize: 0x18 }
- { offsetInCU: 0x15EA, offset: 0x9137B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xC9C, symBinAddr: 0xD9D0, symSize: 0x14 }
- { offsetInCU: 0x161E, offset: 0x913AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0xD9E4, symSize: 0x8 }
- { offsetInCU: 0x163E, offset: 0x913CF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCB0, symBinAddr: 0xD9E4, symSize: 0x8 }
- { offsetInCU: 0x1661, offset: 0x913F2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0xD9EC, symSize: 0x8 }
- { offsetInCU: 0x1681, offset: 0x91412, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCB8, symBinAddr: 0xD9EC, symSize: 0x8 }
- { offsetInCU: 0x1693, offset: 0x91424, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xCC0, symBinAddr: 0xD9F4, symSize: 0x144 }
- { offsetInCU: 0x1895, offset: 0x91626, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE04, symBinAddr: 0xDB38, symSize: 0x220 }
- { offsetInCU: 0x1BFD, offset: 0x9198E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1024, symBinAddr: 0xDD58, symSize: 0xB8 }
- { offsetInCU: 0x1E82, offset: 0x91C13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11A4, symBinAddr: 0xDE10, symSize: 0x34 }
- { offsetInCU: 0x1E96, offset: 0x91C27, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11D8, symBinAddr: 0xDE44, symSize: 0x28 }
- { offsetInCU: 0x1EAA, offset: 0x91C3B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1200, symBinAddr: 0xDE6C, symSize: 0x34 }
- { offsetInCU: 0x1EBE, offset: 0x91C4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1234, symBinAddr: 0xDEA0, symSize: 0x5C }
- { offsetInCU: 0x1ED2, offset: 0x91C63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x129C, symBinAddr: 0xDEFC, symSize: 0x44 }
- { offsetInCU: 0x1EE6, offset: 0x91C77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12E0, symBinAddr: 0xDF40, symSize: 0x48 }
- { offsetInCU: 0x1EFA, offset: 0x91C8B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1328, symBinAddr: 0xDF88, symSize: 0x3C }
- { offsetInCU: 0x1F0E, offset: 0x91C9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1364, symBinAddr: 0xDFC4, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x92041, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xE04C, symSize: 0x68 }
- { offsetInCU: 0x7A, offset: 0x92070, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x88, symBinAddr: 0xE0D4, symSize: 0x24 }
- { offsetInCU: 0x97, offset: 0x9208D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xAC, symBinAddr: 0xE0F8, symSize: 0xE4 }
- { offsetInCU: 0x1C2, offset: 0x921B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x190, symBinAddr: 0xE1DC, symSize: 0x28 }
- { offsetInCU: 0x252, offset: 0x92248, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1B8, symBinAddr: 0xE204, symSize: 0x10C }
- { offsetInCU: 0x3DB, offset: 0x923D1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2C4, symBinAddr: 0xE310, symSize: 0x70 }
- { offsetInCU: 0x49A, offset: 0x92490, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x334, symBinAddr: 0xE380, symSize: 0xFC }
- { offsetInCU: 0x58F, offset: 0x92585, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x430, symBinAddr: 0xE47C, symSize: 0x40 }
- { offsetInCU: 0x601, offset: 0x925F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x470, symBinAddr: 0xE4BC, symSize: 0x2C }
- { offsetInCU: 0x630, offset: 0x92626, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x49C, symBinAddr: 0xE4E8, symSize: 0xC }
- { offsetInCU: 0x693, offset: 0x92689, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x4A8, symBinAddr: 0xE4F4, symSize: 0x98 }
- { offsetInCU: 0x6C8, offset: 0x926BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x540, symBinAddr: 0xE58C, symSize: 0xC }
- { offsetInCU: 0x738, offset: 0x9272E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x6F4, symBinAddr: 0xE740, symSize: 0x2C }
- { offsetInCU: 0x77C, offset: 0x92772, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x68, symBinAddr: 0xE0B4, symSize: 0x20 }
- { offsetInCU: 0x883, offset: 0x92879, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x54C, symBinAddr: 0xE598, symSize: 0x6C }
- { offsetInCU: 0x8B6, offset: 0x928AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x5B8, symBinAddr: 0xE604, symSize: 0x48 }
- { offsetInCU: 0x904, offset: 0x928FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x624, symBinAddr: 0xE670, symSize: 0x88 }
- { offsetInCU: 0x934, offset: 0x9292A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x6AC, symBinAddr: 0xE6F8, symSize: 0x48 }
- { offsetInCU: 0x9FE, offset: 0x929F4, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x82C, symBinAddr: 0xE878, symSize: 0xFC }
- { offsetInCU: 0xBA1, offset: 0x92B97, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x968, symBinAddr: 0xE974, symSize: 0x110 }
- { offsetInCU: 0xD44, offset: 0x92D3A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xA78, symBinAddr: 0xEA84, symSize: 0xFC }
- { offsetInCU: 0xEF2, offset: 0x92EE8, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xB74, symBinAddr: 0xEB80, symSize: 0x128 }
- { offsetInCU: 0x27, offset: 0x93220, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xEE28, symSize: 0x4 }
- { offsetInCU: 0x3F, offset: 0x93238, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x10, symBinAddr: 0xEE38, symSize: 0x48 }
- { offsetInCU: 0x53, offset: 0x9324C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0x58, symBinAddr: 0xEE80, symSize: 0x18 }
- { offsetInCU: 0x67, offset: 0x93260, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0x70, symBinAddr: 0xEE98, symSize: 0x48 }
- { offsetInCU: 0x7B, offset: 0x93274, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0xB8, symBinAddr: 0xEEE0, symSize: 0xA0 }
- { offsetInCU: 0x8F, offset: 0x93288, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x164, symBinAddr: 0xEF80, symSize: 0x60 }
- { offsetInCU: 0xA3, offset: 0x9329C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x1C4, symBinAddr: 0xEFE0, symSize: 0x58 }
- { offsetInCU: 0xB7, offset: 0x932B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x21C, symBinAddr: 0xF038, symSize: 0x54 }
- { offsetInCU: 0xCB, offset: 0x932C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x270, symBinAddr: 0xF08C, symSize: 0x18 }
- { offsetInCU: 0xDF, offset: 0x932D8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x288, symBinAddr: 0xF0A4, symSize: 0x4 }
- { offsetInCU: 0xF3, offset: 0x932EC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x28C, symBinAddr: 0xF0A8, symSize: 0x20 }
- { offsetInCU: 0x107, offset: 0x93300, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x2AC, symBinAddr: 0xF0C8, symSize: 0x10 }
- { offsetInCU: 0x12C, offset: 0x93325, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xEE28, symSize: 0x4 }
- { offsetInCU: 0x148, offset: 0x93341, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x4, symBinAddr: 0xEE2C, symSize: 0x4 }
- { offsetInCU: 0x164, offset: 0x9335D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x8, symBinAddr: 0xEE30, symSize: 0x4 }
- { offsetInCU: 0x180, offset: 0x93379, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0xC, symBinAddr: 0xEE34, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x9340E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xF0D8, symSize: 0x28 }
- { offsetInCU: 0x52, offset: 0x93439, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xF0D8, symSize: 0x28 }
- { offsetInCU: 0xC5, offset: 0x934AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x28, symBinAddr: 0xF100, symSize: 0x1B4 }
- { offsetInCU: 0x3A6, offset: 0x9378D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x1DC, symBinAddr: 0xF2B4, symSize: 0x70 }
- { offsetInCU: 0x4A7, offset: 0x9388E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x24C, symBinAddr: 0xF324, symSize: 0x104 }
- { offsetInCU: 0x5DD, offset: 0x939C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x350, symBinAddr: 0xF428, symSize: 0x4C }
- { offsetInCU: 0x6C4, offset: 0x93AAB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x3C0, symBinAddr: 0xF498, symSize: 0x9C }
- { offsetInCU: 0x71B, offset: 0x93B02, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x45C, symBinAddr: 0xF534, symSize: 0x6C }
- { offsetInCU: 0x76C, offset: 0x93B53, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x4C8, symBinAddr: 0xF5A0, symSize: 0x24 }
- { offsetInCU: 0x7CB, offset: 0x93BB2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x4EC, symBinAddr: 0xF5C4, symSize: 0x2C }
- { offsetInCU: 0x9ED, offset: 0x93DD4, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x39C, symBinAddr: 0xF474, symSize: 0x24 }
- { offsetInCU: 0xA98, offset: 0x93E7F, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x518, symBinAddr: 0xF5F0, symSize: 0x88 }
- { offsetInCU: 0xB39, offset: 0x93F20, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x5A0, symBinAddr: 0xF678, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x940DC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xF698, symSize: 0x48 }
- { offsetInCU: 0x6C, offset: 0x94121, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xF698, symSize: 0x48 }
- { offsetInCU: 0xDB, offset: 0x94190, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x88, symBinAddr: 0xF6E0, symSize: 0x14 }
- { offsetInCU: 0x10E, offset: 0x941C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x9C, symBinAddr: 0xF6F4, symSize: 0x28 }
- { offsetInCU: 0x1A4, offset: 0x94259, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xC4, symBinAddr: 0xF71C, symSize: 0x44 }
- { offsetInCU: 0x29E, offset: 0x94353, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xF760, symSize: 0x14 }
- { offsetInCU: 0x2BE, offset: 0x94373, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x108, symBinAddr: 0xF760, symSize: 0x14 }
- { offsetInCU: 0x2FE, offset: 0x943B3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x11C, symBinAddr: 0xF774, symSize: 0x44 }
- { offsetInCU: 0x3E1, offset: 0x94496, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x160, symBinAddr: 0xF7B8, symSize: 0x28 }
- { offsetInCU: 0x46D, offset: 0x94522, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x2A4, symBinAddr: 0xF8FC, symSize: 0x58 }
- { offsetInCU: 0x509, offset: 0x945BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1C8, symBinAddr: 0xF820, symSize: 0x4 }
- { offsetInCU: 0x51D, offset: 0x945D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1CC, symBinAddr: 0xF824, symSize: 0x44 }
- { offsetInCU: 0x531, offset: 0x945E6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x210, symBinAddr: 0xF868, symSize: 0x4 }
- { offsetInCU: 0x545, offset: 0x945FA, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x214, symBinAddr: 0xF86C, symSize: 0x4C }
- { offsetInCU: 0x559, offset: 0x9460E, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x260, symBinAddr: 0xF8B8, symSize: 0x44 }
- { offsetInCU: 0x56D, offset: 0x94622, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x30C, symBinAddr: 0xF954, symSize: 0x90 }
- { offsetInCU: 0x581, offset: 0x94636, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x39C, symBinAddr: 0xF9E4, symSize: 0xBC }
- { offsetInCU: 0x595, offset: 0x9464A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x458, symBinAddr: 0xFAA0, symSize: 0x8 }
- { offsetInCU: 0x5A9, offset: 0x9465E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x460, symBinAddr: 0xFAA8, symSize: 0x4 }
- { offsetInCU: 0x5BD, offset: 0x94672, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x464, symBinAddr: 0xFAAC, symSize: 0x8 }
- { offsetInCU: 0x5D1, offset: 0x94686, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x46C, symBinAddr: 0xFAB4, symSize: 0x10 }
- { offsetInCU: 0x640, offset: 0x946F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x188, symBinAddr: 0xF7E0, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x94839, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xFAC4, symSize: 0x68 }
- { offsetInCU: 0xA6, offset: 0x948B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xFAC4, symSize: 0x68 }
- { offsetInCU: 0x2B0, offset: 0x94ABE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x68, symBinAddr: 0xFB2C, symSize: 0x1C0 }
- { offsetInCU: 0x583, offset: 0x94D91, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x228, symBinAddr: 0xFCEC, symSize: 0xD0 }
- { offsetInCU: 0x7F1, offset: 0x94FFF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2F8, symBinAddr: 0xFDBC, symSize: 0x8 }
- { offsetInCU: 0x80F, offset: 0x9501D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x300, symBinAddr: 0xFDC4, symSize: 0x8 }
- { offsetInCU: 0x82D, offset: 0x9503B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x308, symBinAddr: 0xFDCC, symSize: 0x8 }
- { offsetInCU: 0x84B, offset: 0x95059, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x310, symBinAddr: 0xFDD4, symSize: 0xD0 }
- { offsetInCU: 0xA02, offset: 0x95210, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x3E0, symBinAddr: 0xFEA4, symSize: 0x150 }
- { offsetInCU: 0xC18, offset: 0x95426, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x530, symBinAddr: 0xFFF4, symSize: 0x14C }
- { offsetInCU: 0xE35, offset: 0x95643, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x67C, symBinAddr: 0x10140, symSize: 0x28 }
- { offsetInCU: 0xE77, offset: 0x95685, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x6A4, symBinAddr: 0x10168, symSize: 0x50 }
- { offsetInCU: 0xF03, offset: 0x95711, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x6F4, symBinAddr: 0x101B8, symSize: 0x50 }
- { offsetInCU: 0xF92, offset: 0x957A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x744, symBinAddr: 0x10208, symSize: 0x4 }
- { offsetInCU: 0xFC0, offset: 0x957CE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x794, symBinAddr: 0x10258, symSize: 0x28 }
- { offsetInCU: 0x125D, offset: 0x95A6B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x7BC, symBinAddr: 0x10280, symSize: 0x14 }
- { offsetInCU: 0x1295, offset: 0x95AA3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x7D0, symBinAddr: 0x10294, symSize: 0x14 }
- { offsetInCU: 0x12CD, offset: 0x95ADB, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x7E4, symBinAddr: 0x102A8, symSize: 0x14 }
- { offsetInCU: 0x1305, offset: 0x95B13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x9B0, symBinAddr: 0x10474, symSize: 0x4 }
- { offsetInCU: 0x1319, offset: 0x95B27, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x9B4, symBinAddr: 0x10478, symSize: 0x44 }
- { offsetInCU: 0x132D, offset: 0x95B3B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x9F8, symBinAddr: 0x104BC, symSize: 0x34 }
- { offsetInCU: 0x1341, offset: 0x95B4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0xA2C, symBinAddr: 0x104F0, symSize: 0x8 }
- { offsetInCU: 0x1355, offset: 0x95B63, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0xA34, symBinAddr: 0x104F8, symSize: 0x34 }
- { offsetInCU: 0x1369, offset: 0x95B77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0xA68, symBinAddr: 0x1052C, symSize: 0x48 }
- { offsetInCU: 0x137D, offset: 0x95B8B, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0xAB0, symBinAddr: 0x10574, symSize: 0x14 }
- { offsetInCU: 0x1391, offset: 0x95B9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0xAC4, symBinAddr: 0x10588, symSize: 0x38 }
- { offsetInCU: 0x13A5, offset: 0x95BB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xAFC, symBinAddr: 0x105C0, symSize: 0x48 }
- { offsetInCU: 0x13B9, offset: 0x95BC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xB44, symBinAddr: 0x10608, symSize: 0x40 }
- { offsetInCU: 0x13CD, offset: 0x95BDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xB84, symBinAddr: 0x10648, symSize: 0x10 }
- { offsetInCU: 0x153A, offset: 0x95D48, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x748, symBinAddr: 0x1020C, symSize: 0x4C }
- { offsetInCU: 0x1578, offset: 0x95D86, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0x102BC, symSize: 0x98 }
- { offsetInCU: 0x1598, offset: 0x95DA6, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0x102BC, symSize: 0x98 }
- { offsetInCU: 0x15AC, offset: 0x95DBA, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0x102BC, symSize: 0x98 }
- { offsetInCU: 0x15C0, offset: 0x95DCE, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x7F8, symBinAddr: 0x102BC, symSize: 0x98 }
- { offsetInCU: 0x164C, offset: 0x95E5A, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x890, symBinAddr: 0x10354, symSize: 0x120 }
- { offsetInCU: 0x27, offset: 0x960AA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0x10658, symSize: 0x14 }
- { offsetInCU: 0x46, offset: 0x960C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0x10658, symSize: 0x14 }
- { offsetInCU: 0x85, offset: 0x96108, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x14, symBinAddr: 0x1066C, symSize: 0xB4 }
- { offsetInCU: 0x176, offset: 0x961F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xC8, symBinAddr: 0x10720, symSize: 0xC }
- { offsetInCU: 0x194, offset: 0x96217, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xD4, symBinAddr: 0x1072C, symSize: 0xC }
- { offsetInCU: 0x1B2, offset: 0x96235, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0xE0, symBinAddr: 0x10738, symSize: 0x3C }
- { offsetInCU: 0x2E8, offset: 0x9636B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x11C, symBinAddr: 0x10774, symSize: 0x20 }
- { offsetInCU: 0x355, offset: 0x963D8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x13C, symBinAddr: 0x10794, symSize: 0x5C }
- { offsetInCU: 0x4EB, offset: 0x9656E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x198, symBinAddr: 0x107F0, symSize: 0x4 }
- { offsetInCU: 0x516, offset: 0x96599, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x19C, symBinAddr: 0x107F4, symSize: 0x5C }
- { offsetInCU: 0x6C9, offset: 0x9674C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1F8, symBinAddr: 0x10850, symSize: 0x3C }
- { offsetInCU: 0x82D, offset: 0x968B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0x108E4, symSize: 0x20 }
- { offsetInCU: 0x84D, offset: 0x968D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C, symBinAddr: 0x108E4, symSize: 0x20 }
- { offsetInCU: 0x949, offset: 0x969CC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2AC, symBinAddr: 0x10904, symSize: 0x4 }
- { offsetInCU: 0x95D, offset: 0x969E0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2B0, symBinAddr: 0x10908, symSize: 0x44 }
- { offsetInCU: 0x971, offset: 0x969F4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x304, symBinAddr: 0x1094C, symSize: 0x94 }
- { offsetInCU: 0x985, offset: 0x96A08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x398, symBinAddr: 0x109E0, symSize: 0xBC }
- { offsetInCU: 0x999, offset: 0x96A1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x454, symBinAddr: 0x10A9C, symSize: 0x10 }
- { offsetInCU: 0xA45, offset: 0x96AC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x234, symBinAddr: 0x1088C, symSize: 0x58 }
- { offsetInCU: 0x27, offset: 0x96CC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10AAC, symSize: 0x4 }
- { offsetInCU: 0x4B, offset: 0x96CEC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10AAC, symSize: 0x4 }
- { offsetInCU: 0x6E, offset: 0x96D0F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0x10AC0, symSize: 0x4 }
- { offsetInCU: 0x8E, offset: 0x96D2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x14, symBinAddr: 0x10AC0, symSize: 0x4 }
- { offsetInCU: 0x9F, offset: 0x96D40, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x18, symBinAddr: 0x10AC4, symSize: 0x118 }
- { offsetInCU: 0x1AE, offset: 0x96E4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x130, symBinAddr: 0x10BDC, symSize: 0x30 }
- { offsetInCU: 0x1C2, offset: 0x96E63, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x164, symBinAddr: 0x10C0C, symSize: 0x14 }
- { offsetInCU: 0x1D6, offset: 0x96E77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x178, symBinAddr: 0x10C20, symSize: 0x48 }
- { offsetInCU: 0x1EA, offset: 0x96E8B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x1C0, symBinAddr: 0x10C68, symSize: 0x48 }
- { offsetInCU: 0x1FE, offset: 0x96E9F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x208, symBinAddr: 0x10CB0, symSize: 0x18 }
- { offsetInCU: 0x212, offset: 0x96EB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x220, symBinAddr: 0x10CC8, symSize: 0x4 }
- { offsetInCU: 0x226, offset: 0x96EC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x224, symBinAddr: 0x10CCC, symSize: 0x1C }
- { offsetInCU: 0x23A, offset: 0x96EDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x240, symBinAddr: 0x10CE8, symSize: 0x10 }
- { offsetInCU: 0x25F, offset: 0x96F00, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x4, symBinAddr: 0x10AB0, symSize: 0x4 }
- { offsetInCU: 0x27B, offset: 0x96F1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x8, symBinAddr: 0x10AB4, symSize: 0x4 }
- { offsetInCU: 0x297, offset: 0x96F38, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0xC, symBinAddr: 0x10AB8, symSize: 0x4 }
- { offsetInCU: 0x2B3, offset: 0x96F54, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x10, symBinAddr: 0x10ABC, symSize: 0x4 }
- { offsetInCU: 0x27, offset: 0x96FFF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10CF8, symSize: 0x14 }
- { offsetInCU: 0x4B, offset: 0x97023, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10CF8, symSize: 0x14 }
- { offsetInCU: 0x7E, offset: 0x97056, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x14, symBinAddr: 0x10D0C, symSize: 0x18 }
- { offsetInCU: 0xA9, offset: 0x97081, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x2C, symBinAddr: 0x10D24, symSize: 0x28 }
- { offsetInCU: 0x13F, offset: 0x97117, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x54, symBinAddr: 0x10D4C, symSize: 0x44 }
- { offsetInCU: 0x239, offset: 0x97211, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0x10D90, symSize: 0x14 }
- { offsetInCU: 0x259, offset: 0x97231, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x98, symBinAddr: 0x10D90, symSize: 0x14 }
- { offsetInCU: 0x299, offset: 0x97271, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xAC, symBinAddr: 0x10DA4, symSize: 0x44 }
- { offsetInCU: 0x37C, offset: 0x97354, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF0, symBinAddr: 0x10DE8, symSize: 0x28 }
- { offsetInCU: 0x405, offset: 0x973DD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x158, symBinAddr: 0x10E50, symSize: 0x4 }
- { offsetInCU: 0x419, offset: 0x973F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x15C, symBinAddr: 0x10E54, symSize: 0x44 }
- { offsetInCU: 0x42D, offset: 0x97405, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1B0, symBinAddr: 0x10E98, symSize: 0x90 }
- { offsetInCU: 0x441, offset: 0x97419, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x240, symBinAddr: 0x10F28, symSize: 0xBC }
- { offsetInCU: 0x455, offset: 0x9742D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2FC, symBinAddr: 0x10FE4, symSize: 0x8 }
- { offsetInCU: 0x469, offset: 0x97441, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x304, symBinAddr: 0x10FEC, symSize: 0x4 }
- { offsetInCU: 0x47D, offset: 0x97455, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x308, symBinAddr: 0x10FF0, symSize: 0x8 }
- { offsetInCU: 0x491, offset: 0x97469, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x310, symBinAddr: 0x10FF8, symSize: 0x10 }
- { offsetInCU: 0x4EA, offset: 0x974C2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x118, symBinAddr: 0x10E10, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x975ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x11008, symSize: 0x6C }
- { offsetInCU: 0xAC, offset: 0x97672, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x11008, symSize: 0x6C }
- { offsetInCU: 0xF0, offset: 0x976B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x6C, symBinAddr: 0x11074, symSize: 0x24 }
- { offsetInCU: 0x155, offset: 0x9771B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0x11098, symSize: 0x9C }
- { offsetInCU: 0x1BD, offset: 0x97783, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x12C, symBinAddr: 0x11134, symSize: 0x2C }
- { offsetInCU: 0x217, offset: 0x977DD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x158, symBinAddr: 0x11160, symSize: 0x20 }
- { offsetInCU: 0x27, offset: 0x978A4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x11180, symSize: 0x4 }
- { offsetInCU: 0x46, offset: 0x978C3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x11180, symSize: 0x4 }
- { offsetInCU: 0x5A, offset: 0x978D7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x4, symBinAddr: 0x11184, symSize: 0x14 }
- { offsetInCU: 0xC1, offset: 0x9793E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x18, symBinAddr: 0x11198, symSize: 0xC }
- { offsetInCU: 0xDF, offset: 0x9795C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x24, symBinAddr: 0x111A4, symSize: 0x8 }
- { offsetInCU: 0xFD, offset: 0x9797A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x2C, symBinAddr: 0x111AC, symSize: 0x8 }
- { offsetInCU: 0x11B, offset: 0x97998, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x34, symBinAddr: 0x111B4, symSize: 0x8 }
- { offsetInCU: 0x139, offset: 0x979B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x3C, symBinAddr: 0x111BC, symSize: 0x8 }
- { offsetInCU: 0x157, offset: 0x979D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x44, symBinAddr: 0x111C4, symSize: 0x198 }
- { offsetInCU: 0x287, offset: 0x97B04, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1DC, symBinAddr: 0x1135C, symSize: 0x4 }
- { offsetInCU: 0x2B2, offset: 0x97B2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x11360, symSize: 0x4 }
- { offsetInCU: 0x2D2, offset: 0x97B4F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x11360, symSize: 0x4 }
- { offsetInCU: 0x2E3, offset: 0x97B60, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1E4, symBinAddr: 0x11364, symSize: 0x48 }
- { offsetInCU: 0x316, offset: 0x97B93, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x22C, symBinAddr: 0x113AC, symSize: 0x30 }
- { offsetInCU: 0x32A, offset: 0x97BA7, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x260, symBinAddr: 0x113DC, symSize: 0x14 }
- { offsetInCU: 0x33E, offset: 0x97BBB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x274, symBinAddr: 0x113F0, symSize: 0x44 }
- { offsetInCU: 0x352, offset: 0x97BCF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x2B8, symBinAddr: 0x11434, symSize: 0x4C }
- { offsetInCU: 0x366, offset: 0x97BE3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x304, symBinAddr: 0x11480, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x97CD6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x11490, symSize: 0xC }
- { offsetInCU: 0x4B, offset: 0x97CFA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x11490, symSize: 0xC }
- { offsetInCU: 0x66, offset: 0x97D15, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0xC, symBinAddr: 0x1149C, symSize: 0x18 }
- { offsetInCU: 0xB8, offset: 0x97D67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0x115C0, symSize: 0x8 }
- { offsetInCU: 0xD4, offset: 0x97D83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0x115C8, symSize: 0x10 }
- { offsetInCU: 0xEC, offset: 0x97D9B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x138, symBinAddr: 0x115C8, symSize: 0x10 }
- { offsetInCU: 0x109, offset: 0x97DB8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x38, symBinAddr: 0x114C8, symSize: 0x4 }
- { offsetInCU: 0x11D, offset: 0x97DCC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x3C, symBinAddr: 0x114CC, symSize: 0x44 }
- { offsetInCU: 0x147, offset: 0x97DF6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x158, symBinAddr: 0x115D8, symSize: 0x90 }
- { offsetInCU: 0x15B, offset: 0x97E0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x1E8, symBinAddr: 0x11668, symSize: 0xBC }
- { offsetInCU: 0x16F, offset: 0x97E1E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2A4, symBinAddr: 0x11724, symSize: 0x8 }
- { offsetInCU: 0x183, offset: 0x97E32, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2AC, symBinAddr: 0x1172C, symSize: 0x4 }
- { offsetInCU: 0x197, offset: 0x97E46, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2B0, symBinAddr: 0x11730, symSize: 0x8 }
- { offsetInCU: 0x1AB, offset: 0x97E5A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x2B8, symBinAddr: 0x11738, symSize: 0x10 }
- { offsetInCU: 0x1E6, offset: 0x97E95, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x24, symBinAddr: 0x114B4, symSize: 0x14 }
- { offsetInCU: 0x277, offset: 0x97F26, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0x11510, symSize: 0x44 }
- { offsetInCU: 0x34F, offset: 0x97FFE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC4, symBinAddr: 0x11554, symSize: 0x2C }
- { offsetInCU: 0x3CB, offset: 0x9807A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0x11580, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x9821A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xBC, symBinAddr: 0x11804, symSize: 0x4C }
- { offsetInCU: 0xE0, offset: 0x98263, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x16C, symBinAddr: 0x118B4, symSize: 0x48 }
- { offsetInCU: 0xFF, offset: 0x98282, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1F8, symBinAddr: 0x11940, symSize: 0x8 }
- { offsetInCU: 0x12C, offset: 0x982AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x200, symBinAddr: 0x11948, symSize: 0x64 }
- { offsetInCU: 0x151, offset: 0x982D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x264, symBinAddr: 0x119AC, symSize: 0x464 }
- { offsetInCU: 0x553, offset: 0x986D6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x7B0, symBinAddr: 0x11E50, symSize: 0x84 }
- { offsetInCU: 0x602, offset: 0x98785, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x834, symBinAddr: 0x11ED4, symSize: 0x68 }
- { offsetInCU: 0x69B, offset: 0x9881E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x89C, symBinAddr: 0x11F3C, symSize: 0x1C }
- { offsetInCU: 0x6E0, offset: 0x98863, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x8B8, symBinAddr: 0x11F58, symSize: 0x84 }
- { offsetInCU: 0x78F, offset: 0x98912, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0x93C, symBinAddr: 0x11FDC, symSize: 0x68 }
- { offsetInCU: 0x828, offset: 0x989AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0x9A4, symBinAddr: 0x12044, symSize: 0xC }
- { offsetInCU: 0x882, offset: 0x98A05, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0x9B0, symBinAddr: 0x12050, symSize: 0x1C }
- { offsetInCU: 0x8C7, offset: 0x98A4A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0x9CC, symBinAddr: 0x1206C, symSize: 0x6C }
- { offsetInCU: 0x8EC, offset: 0x98A6F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xA38, symBinAddr: 0x120D8, symSize: 0x2C4 }
- { offsetInCU: 0x9E9, offset: 0x98B6C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xCFC, symBinAddr: 0x1239C, symSize: 0xD4 }
- { offsetInCU: 0xB14, offset: 0x98C97, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xDD0, symBinAddr: 0x12470, symSize: 0xD4 }
- { offsetInCU: 0xC3F, offset: 0x98DC2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0xF58, symBinAddr: 0x125F8, symSize: 0xD4 }
- { offsetInCU: 0xD6A, offset: 0x98EED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x108C, symBinAddr: 0x1272C, symSize: 0xD4 }
- { offsetInCU: 0xE95, offset: 0x99018, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x1160, symBinAddr: 0x12800, symSize: 0xD4 }
- { offsetInCU: 0xFC0, offset: 0x99143, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x1234, symBinAddr: 0x128D4, symSize: 0xD4 }
- { offsetInCU: 0x10EB, offset: 0x9926E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x1308, symBinAddr: 0x129A8, symSize: 0xD4 }
- { offsetInCU: 0x1216, offset: 0x99399, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x13DC, symBinAddr: 0x12A7C, symSize: 0xD4 }
- { offsetInCU: 0x135F, offset: 0x994E2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x14B0, symBinAddr: 0x12B50, symSize: 0xC8 }
- { offsetInCU: 0x150C, offset: 0x9968F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1578, symBinAddr: 0x12C18, symSize: 0x28 }
- { offsetInCU: 0x1914, offset: 0x99A97, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x15A0, symBinAddr: 0x12C40, symSize: 0x9E8 }
- { offsetInCU: 0x267D, offset: 0x9A800, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x1F88, symBinAddr: 0x13628, symSize: 0x60 }
- { offsetInCU: 0x27B0, offset: 0x9A933, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x1FE8, symBinAddr: 0x13688, symSize: 0x220 }
- { offsetInCU: 0x2AB9, offset: 0x9AC3C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2208, symBinAddr: 0x138A8, symSize: 0x70 }
- { offsetInCU: 0x2BB2, offset: 0x9AD35, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2278, symBinAddr: 0x13918, symSize: 0x10C }
- { offsetInCU: 0x2CE1, offset: 0x9AE64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x2384, symBinAddr: 0x13A24, symSize: 0x5C }
- { offsetInCU: 0x2D8F, offset: 0x9AF12, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x23E0, symBinAddr: 0x13A80, symSize: 0x30 }
- { offsetInCU: 0x2DAC, offset: 0x9AF2F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2410, symBinAddr: 0x13AB0, symSize: 0x18 }
- { offsetInCU: 0x2E63, offset: 0x9AFE6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2428, symBinAddr: 0x13AC8, symSize: 0x348 }
- { offsetInCU: 0x3351, offset: 0x9B4D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2770, symBinAddr: 0x13E10, symSize: 0x60 }
- { offsetInCU: 0x33ED, offset: 0x9B570, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x27D0, symBinAddr: 0x13E70, symSize: 0x210 }
- { offsetInCU: 0x3666, offset: 0x9B7E9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x29E0, symBinAddr: 0x14080, symSize: 0x70 }
- { offsetInCU: 0x370F, offset: 0x9B892, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x2A50, symBinAddr: 0x140F0, symSize: 0x104 }
- { offsetInCU: 0x37EF, offset: 0x9B972, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x2B54, symBinAddr: 0x141F4, symSize: 0x5C }
- { offsetInCU: 0x383E, offset: 0x9B9C1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x2BB0, symBinAddr: 0x14250, symSize: 0x6C }
- { offsetInCU: 0x386B, offset: 0x9B9EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x2C1C, symBinAddr: 0x142BC, symSize: 0x1C }
- { offsetInCU: 0x3899, offset: 0x9BA1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0x11748, symSize: 0x50 }
- { offsetInCU: 0x38CF, offset: 0x9BA52, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x50, symBinAddr: 0x11798, symSize: 0x6C }
- { offsetInCU: 0x390F, offset: 0x9BA92, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0x108, symBinAddr: 0x11850, symSize: 0x64 }
- { offsetInCU: 0x3951, offset: 0x9BAD4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x1B4, symBinAddr: 0x118FC, symSize: 0x44 }
- { offsetInCU: 0x3A57, offset: 0x9BBDA, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x730, symBinAddr: 0x11E10, symSize: 0x20 }
- { offsetInCU: 0x3A6B, offset: 0x9BBEE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x750, symBinAddr: 0x11E30, symSize: 0x20 }
- { offsetInCU: 0x3B93, offset: 0x9BD16, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0xEA4, symBinAddr: 0x12544, symSize: 0x6C }
- { offsetInCU: 0x3BC6, offset: 0x9BD49, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0xF10, symBinAddr: 0x125B0, symSize: 0x48 }
- { offsetInCU: 0x3C82, offset: 0x9BE05, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x102C, symBinAddr: 0x126CC, symSize: 0x60 }
- { offsetInCU: 0x40E5, offset: 0x9C268, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x2C38, symBinAddr: 0x142D8, symSize: 0x60 }
- { offsetInCU: 0x4115, offset: 0x9C298, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x2CBC, symBinAddr: 0x1435C, symSize: 0x88 }
- { offsetInCU: 0x4145, offset: 0x9C2C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x2D44, symBinAddr: 0x143E4, symSize: 0x60 }
- { offsetInCU: 0x4175, offset: 0x9C2F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x2DA4, symBinAddr: 0x14444, symSize: 0x88 }
- { offsetInCU: 0x41A9, offset: 0x9C32C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x2E2C, symBinAddr: 0x144CC, symSize: 0x20 }
- { offsetInCU: 0x41D9, offset: 0x9C35C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x2E4C, symBinAddr: 0x144EC, symSize: 0x88 }
- { offsetInCU: 0x4209, offset: 0x9C38C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x2ED4, symBinAddr: 0x14574, symSize: 0x80 }
- { offsetInCU: 0x4239, offset: 0x9C3BC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x2F54, symBinAddr: 0x145F4, symSize: 0x48 }
- { offsetInCU: 0x4295, offset: 0x9C418, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x2F9C, symBinAddr: 0x1463C, symSize: 0x24 }
- { offsetInCU: 0x42C9, offset: 0x9C44C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x2FC0, symBinAddr: 0x14660, symSize: 0x24 }
- { offsetInCU: 0x42FD, offset: 0x9C480, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x2FE4, symBinAddr: 0x14684, symSize: 0x28 }
- { offsetInCU: 0x4331, offset: 0x9C4B4, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x300C, symBinAddr: 0x146AC, symSize: 0x28 }
- { offsetInCU: 0x435A, offset: 0x9C4DD, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3034, symBinAddr: 0x146D4, symSize: 0x28 }
- { offsetInCU: 0x436E, offset: 0x9C4F1, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3308, symBinAddr: 0x149A8, symSize: 0x168 }
...

@ -0,0 +1,487 @@
---
triple: 'x86_64-apple-darwin'
binary-path: '/Users/marcchevaldonne/Library/Developer/Xcode/DerivedData/DouShouQiModel-bzzvovsrfmbhuydeirorjmljgtyf/Build/Intermediates.noindex/ArchiveIntermediates/DouShouQiModel/InstallationBuildProductsLocation/Library/Frameworks/DouShouQiModel.framework/Versions/A/DouShouQiModel'
relocations:
- { offsetInCU: 0x34, offset: 0x87BD7, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionString, symObjAddr: 0x0, symBinAddr: 0x14EC0, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x87C0C, size: 0x8, addend: 0x0, symName: _DouShouQiModelVersionNumber, symObjAddr: 0x38, symBinAddr: 0x14EF8, symSize: 0x0 }
- { offsetInCU: 0x27, offset: 0x87C49, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3A30, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x87C6D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3A30, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x87C90, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x20, symBinAddr: 0x3A50, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x87CC1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x140, symBinAddr: 0x3B70, symSize: 0x40 }
- { offsetInCU: 0xE5, offset: 0x87D07, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x10, symBinAddr: 0x3A40, symSize: 0x10 }
- { offsetInCU: 0x114, offset: 0x87D36, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x3A60, symSize: 0x20 }
- { offsetInCU: 0x1AA, offset: 0x87DCC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x3A80, symSize: 0x40 }
- { offsetInCU: 0x2A5, offset: 0x87EC7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x3AC0, symSize: 0x10 }
- { offsetInCU: 0x2FB, offset: 0x87F1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x3AD0, symSize: 0x40 }
- { offsetInCU: 0x3DF, offset: 0x88001, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x3B10, symSize: 0x20 }
- { offsetInCU: 0x468, offset: 0x8808A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASQWb', symObjAddr: 0x180, symBinAddr: 0x3BB0, symSize: 0x10 }
- { offsetInCU: 0x47C, offset: 0x8809E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOACSQAAWl', symObjAddr: 0x190, symBinAddr: 0x3BC0, symSize: 0x30 }
- { offsetInCU: 0x490, offset: 0x880B2, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1C0, symBinAddr: 0x3BF0, symSize: 0x10 }
- { offsetInCU: 0x4A4, offset: 0x880C6, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x1D0, symBinAddr: 0x3C00, symSize: 0x10 }
- { offsetInCU: 0x4B8, offset: 0x880DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwet', symObjAddr: 0x1E0, symBinAddr: 0x3C10, symSize: 0xB0 }
- { offsetInCU: 0x4CC, offset: 0x880EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwst', symObjAddr: 0x290, symBinAddr: 0x3CC0, symSize: 0xE0 }
- { offsetInCU: 0x4E0, offset: 0x88102, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwug', symObjAddr: 0x370, symBinAddr: 0x3DA0, symSize: 0x20 }
- { offsetInCU: 0x4F4, offset: 0x88116, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwup', symObjAddr: 0x390, symBinAddr: 0x3DC0, symSize: 0x10 }
- { offsetInCU: 0x508, offset: 0x8812A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOwui', symObjAddr: 0x3A0, symBinAddr: 0x3DD0, symSize: 0x30 }
- { offsetInCU: 0x51C, offset: 0x8813E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6ResultOMa', symObjAddr: 0x3D0, symBinAddr: 0x3E00, symSize: 0x10 }
- { offsetInCU: 0x530, offset: 0x88152, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x3E0, symBinAddr: 0x3E10, symSize: 0x10 }
- { offsetInCU: 0x544, offset: 0x88166, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwet', symObjAddr: 0x3F0, symBinAddr: 0x3E20, symSize: 0x80 }
- { offsetInCU: 0x558, offset: 0x8817A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwst', symObjAddr: 0x470, symBinAddr: 0x3EA0, symSize: 0xD0 }
- { offsetInCU: 0x56C, offset: 0x8818E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwug', symObjAddr: 0x540, symBinAddr: 0x3F70, symSize: 0x10 }
- { offsetInCU: 0x580, offset: 0x881A2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwup', symObjAddr: 0x550, symBinAddr: 0x3F80, symSize: 0x10 }
- { offsetInCU: 0x594, offset: 0x881B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOwui', symObjAddr: 0x560, symBinAddr: 0x3F90, symSize: 0x10 }
- { offsetInCU: 0x5A8, offset: 0x881CA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOMa', symObjAddr: 0x570, symBinAddr: 0x3FA0, symSize: 0xA }
- { offsetInCU: 0x624, offset: 0x88246, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel13WinningReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x3B30, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x8838B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3FB0, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x883AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x3FB0, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x883D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x20, symBinAddr: 0x3FD0, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x88403, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x140, symBinAddr: 0x40F0, symSize: 0x60 }
- { offsetInCU: 0x113, offset: 0x88477, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO2eeoiySbAC_ACtFZ', symObjAddr: 0x10, symBinAddr: 0x3FC0, symSize: 0x10 }
- { offsetInCU: 0x142, offset: 0x884A6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x3FE0, symSize: 0x20 }
- { offsetInCU: 0x1D8, offset: 0x8853C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x4000, symSize: 0x40 }
- { offsetInCU: 0x2D3, offset: 0x88637, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x4040, symSize: 0x10 }
- { offsetInCU: 0x329, offset: 0x8868D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x4050, symSize: 0x40 }
- { offsetInCU: 0x40D, offset: 0x88771, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x4090, symSize: 0x20 }
- { offsetInCU: 0x496, offset: 0x887FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASQWb', symObjAddr: 0x1A0, symBinAddr: 0x4150, symSize: 0x10 }
- { offsetInCU: 0x4AA, offset: 0x8880E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOACSQAAWl', symObjAddr: 0x1B0, symBinAddr: 0x4160, symSize: 0x30 }
- { offsetInCU: 0x4BE, offset: 0x88822, size: 0x8, addend: 0x0, symName: ___swift_memcpy3_1, symObjAddr: 0x1E0, symBinAddr: 0x4190, symSize: 0x20 }
- { offsetInCU: 0x4D2, offset: 0x88836, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwet', symObjAddr: 0x210, symBinAddr: 0x41B0, symSize: 0x70 }
- { offsetInCU: 0x4E6, offset: 0x8884A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwst', symObjAddr: 0x280, symBinAddr: 0x4220, symSize: 0x80 }
- { offsetInCU: 0x4FA, offset: 0x8885E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwug', symObjAddr: 0x300, symBinAddr: 0x42A0, symSize: 0x20 }
- { offsetInCU: 0x50E, offset: 0x88872, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwup', symObjAddr: 0x320, symBinAddr: 0x42C0, symSize: 0x10 }
- { offsetInCU: 0x522, offset: 0x88886, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOwui', symObjAddr: 0x330, symBinAddr: 0x42D0, symSize: 0x20 }
- { offsetInCU: 0x536, offset: 0x8889A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11BoardResultOMa', symObjAddr: 0x350, symBinAddr: 0x42F0, symSize: 0x10 }
- { offsetInCU: 0x54A, offset: 0x888AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwet', symObjAddr: 0x370, symBinAddr: 0x4300, symSize: 0x80 }
- { offsetInCU: 0x55E, offset: 0x888C2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwst', symObjAddr: 0x3F0, symBinAddr: 0x4380, symSize: 0xD0 }
- { offsetInCU: 0x572, offset: 0x888D6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwug', symObjAddr: 0x4C0, symBinAddr: 0x4450, symSize: 0x10 }
- { offsetInCU: 0x586, offset: 0x888EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwup', symObjAddr: 0x4D0, symBinAddr: 0x4460, symSize: 0x10 }
- { offsetInCU: 0x59A, offset: 0x888FE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOwui', symObjAddr: 0x4E0, symBinAddr: 0x4470, symSize: 0x10 }
- { offsetInCU: 0x5AE, offset: 0x88912, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOMa', symObjAddr: 0x4F0, symBinAddr: 0x4480, symSize: 0xA }
- { offsetInCU: 0x60E, offset: 0x88972, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel18BoardFailingReasonOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x40B0, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x88AA3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4490, symSize: 0xD0 }
- { offsetInCU: 0x99, offset: 0x88B15, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfC', symObjAddr: 0x0, symBinAddr: 0x4490, symSize: 0xD0 }
- { offsetInCU: 0x124, offset: 0x88BA0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andId0I11InputMethodACSgSS_AA5OwnerOAA4MoveVSgACctcfc', symObjAddr: 0xD0, symBinAddr: 0x4560, symSize: 0xA0 }
- { offsetInCU: 0x1EB, offset: 0x88C67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x190, symBinAddr: 0x4620, symSize: 0xA0 }
- { offsetInCU: 0x276, offset: 0x88CF2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x230, symBinAddr: 0x46C0, symSize: 0x70 }
- { offsetInCU: 0x2F3, offset: 0x88D6F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x2A0, symBinAddr: 0x4730, symSize: 0x30 }
- { offsetInCU: 0x36F, offset: 0x88DEB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC11changeInput5inputyAA4MoveVSgACc_tF', symObjAddr: 0x2D0, symBinAddr: 0x4760, symSize: 0x30 }
- { offsetInCU: 0x3D4, offset: 0x88E50, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKF', symObjAddr: 0x300, symBinAddr: 0x4790, symSize: 0x50 }
- { offsetInCU: 0x461, offset: 0x88EDD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY0_', symObjAddr: 0x350, symBinAddr: 0x47E0, symSize: 0x110 }
- { offsetInCU: 0x5B9, offset: 0x89035, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTQ1_', symObjAddr: 0x460, symBinAddr: 0x48F0, symSize: 0x80 }
- { offsetInCU: 0x669, offset: 0x890E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY2_', symObjAddr: 0x4E0, symBinAddr: 0x4970, symSize: 0x120 }
- { offsetInCU: 0x744, offset: 0x891C0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerC10chooseMoveyyAA0H0VSgYaKFTY3_', symObjAddr: 0x600, symBinAddr: 0x4A90, symSize: 0x50 }
- { offsetInCU: 0x7A2, offset: 0x8921E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfd', symObjAddr: 0x670, symBinAddr: 0x4B00, symSize: 0x30 }
- { offsetInCU: 0x7F3, offset: 0x8926F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfD', symObjAddr: 0x6A0, symBinAddr: 0x4B30, symSize: 0x40 }
- { offsetInCU: 0x92F, offset: 0x893AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCAA4MoveVSgIeggr_SgWOe', symObjAddr: 0x170, symBinAddr: 0x4600, symSize: 0x20 }
- { offsetInCU: 0x9E9, offset: 0x89465, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCfE', symObjAddr: 0x650, symBinAddr: 0x4AE0, symSize: 0x20 }
- { offsetInCU: 0xA16, offset: 0x89492, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel11HumanPlayerCMa', symObjAddr: 0x6E0, symBinAddr: 0x4B70, symSize: 0x20 }
- { offsetInCU: 0x4F, offset: 0x89641, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0x2C420, symBinAddr: 0x1DB40, symSize: 0x0 }
- { offsetInCU: 0x69, offset: 0x8965B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LLShyAA5PieceVGvpZ', symObjAddr: 0x71D0, symBinAddr: 0x1C720, symSize: 0x0 }
- { offsetInCU: 0xD7, offset: 0x896C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x71D8, symBinAddr: 0x1C728, symSize: 0x0 }
- { offsetInCU: 0xF1, offset: 0x896E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardV_S2itKcGvpZ', symObjAddr: 0x71E0, symBinAddr: 0x1C730, symSize: 0x0 }
- { offsetInCU: 0x10B, offset: 0x896FD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZ', symObjAddr: 0x71E8, symBinAddr: 0x1C738, symSize: 0x0 }
- { offsetInCU: 0x125, offset: 0x89717, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellTypeSDyAA0iJ0OSaySi3row_Si3coltGGvpZ', symObjAddr: 0x2C428, symBinAddr: 0x1DB48, symSize: 0x0 }
- { offsetInCU: 0x2A8, offset: 0x8989A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0x4CA0, symSize: 0x2C0 }
- { offsetInCU: 0xAC6, offset: 0x8A0B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11createBoardAA0H0VyFZ', symObjAddr: 0x2C0, symBinAddr: 0x4F60, symSize: 0x70 }
- { offsetInCU: 0xB04, offset: 0x8A0F6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZ', symObjAddr: 0x330, symBinAddr: 0x4FD0, symSize: 0x10 }
- { offsetInCU: 0xB2E, offset: 0x8A120, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU_', symObjAddr: 0x390, symBinAddr: 0x5030, symSize: 0x30 }
- { offsetInCU: 0xB6E, offset: 0x8A160, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LLSayyAA5BoardVcGvpZfiyAGcfU0_', symObjAddr: 0x3C0, symBinAddr: 0x5060, symSize: 0x60 }
- { offsetInCU: 0xBC0, offset: 0x8A1B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVACycfC', symObjAddr: 0x650, symBinAddr: 0x52F0, symSize: 0x30 }
- { offsetInCU: 0xC05, offset: 0x8A1F7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x680, symBinAddr: 0x5320, symSize: 0x50 }
- { offsetInCU: 0xC6A, offset: 0x8A25C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV19findAuthorizedMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL5boardSayAA4MoveVGAA5BoardV_tF', symObjAddr: 0x6D0, symBinAddr: 0x5370, symSize: 0x460 }
- { offsetInCU: 0x15D1, offset: 0x8ABC3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12findRatMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0xB30, symBinAddr: 0x57D0, symSize: 0x740 }
- { offsetInCU: 0x2140, offset: 0x8B732, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV17findElephantMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1270, symBinAddr: 0x5F10, symSize: 0x6D0 }
- { offsetInCU: 0x2BB3, offset: 0x8C1A5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16findDefaultMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x1940, symBinAddr: 0x65E0, symSize: 0x740 }
- { offsetInCU: 0x3725, offset: 0x8CD17, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV21findTigerAndLionMoves33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x2080, symBinAddr: 0x6D20, symSize: 0x4C0 }
- { offsetInCU: 0x3DE7, offset: 0x8D3D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20findDirectNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x2540, symBinAddr: 0x71E0, symSize: 0x390 }
- { offsetInCU: 0x4327, offset: 0x8D919, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV26findTigerAndLionNeighbours33_DFC7A53241A8EF79AF2B79A48A65C265LL2of5board3row6columnSayAA4MoveVGAA5OwnerO_AA5BoardVS2itF', symObjAddr: 0x28D0, symBinAddr: 0x7570, symSize: 0x5D0 }
- { offsetInCU: 0x4C67, offset: 0x8E259, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x2EA0, symBinAddr: 0x7B40, symSize: 0x140 }
- { offsetInCU: 0x4E34, offset: 0x8E426, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x2FE0, symBinAddr: 0x7C80, symSize: 0x150 }
- { offsetInCU: 0x505D, offset: 0x8E64F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itF', symObjAddr: 0x3130, symBinAddr: 0x7DD0, symSize: 0x80 }
- { offsetInCU: 0x512F, offset: 0x8E721, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtF', symObjAddr: 0x31B0, symBinAddr: 0x7E50, symSize: 0xF0 }
- { offsetInCU: 0x539B, offset: 0x8E98D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x32A0, symBinAddr: 0x7F40, symSize: 0x30 }
- { offsetInCU: 0x5482, offset: 0x8EA74, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itF', symObjAddr: 0x32D0, symBinAddr: 0x7F70, symSize: 0x1B0 }
- { offsetInCU: 0x5622, offset: 0x8EC14, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VAJtKF', symObjAddr: 0x3480, symBinAddr: 0x8120, symSize: 0x4F0 }
- { offsetInCU: 0x5B31, offset: 0x8F123, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0x3970, symBinAddr: 0x8610, symSize: 0x10 }
- { offsetInCU: 0x5B45, offset: 0x8F137, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV8historicSayAA4MoveVGvg', symObjAddr: 0x3980, symBinAddr: 0x8620, symSize: 0x10 }
- { offsetInCU: 0x5B77, offset: 0x8F169, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11createBoardAA0H0VyFZTW', symObjAddr: 0x3990, symBinAddr: 0x8630, symSize: 0x70 }
- { offsetInCU: 0x5BC4, offset: 0x8F1B6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10checkBoardyyAA0H0VKFZTW', symObjAddr: 0x3A00, symBinAddr: 0x86A0, symSize: 0x10 }
- { offsetInCU: 0x5BFC, offset: 0x8F1EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0x3A10, symBinAddr: 0x86B0, symSize: 0x10 }
- { offsetInCU: 0x5C18, offset: 0x8F20A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0x3A20, symBinAddr: 0x86C0, symSize: 0x10 }
- { offsetInCU: 0x5C34, offset: 0x8F226, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0x3A30, symBinAddr: 0x86D0, symSize: 0x10 }
- { offsetInCU: 0x5C50, offset: 0x8F242, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toM00n2ToP0SbAA0K0V_S4itFTW', symObjAddr: 0x3A40, symBinAddr: 0x86E0, symSize: 0x10 }
- { offsetInCU: 0x5C6C, offset: 0x8F25E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP11isMoveValid7onBoard04withH0SbAA0K0V_AA0H0VtFTW', symObjAddr: 0x3A50, symBinAddr: 0x86F0, symSize: 0x10 }
- { offsetInCU: 0x5C88, offset: 0x8F27A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10isGameOver9withBoard16andLastRowPlayed0lM12ColumnPlayerSb_AA6ResultOtAA0K0V_S2itFTW', symObjAddr: 0x3A60, symBinAddr: 0x8700, symSize: 0x10 }
- { offsetInCU: 0x5CA4, offset: 0x8F296, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10playedMove_15onStartingBoard012andResultingK0yAA0H0V_AA0K0VALtKFTW', symObjAddr: 0x3A70, symBinAddr: 0x8710, symSize: 0x10 }
- { offsetInCU: 0x5CD9, offset: 0x8F2CB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0x3A80, symBinAddr: 0x8720, symSize: 0x10 }
- { offsetInCU: 0x5D1E, offset: 0x8F310, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVAA0F0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0x3A90, symBinAddr: 0x8730, symSize: 0x10 }
- { offsetInCU: 0x5D51, offset: 0x8F343, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV10checkBoardyyAA0H0VKFZTf4nd_n', symObjAddr: 0x5C40, symBinAddr: 0xA8E0, symSize: 0x2E0 }
- { offsetInCU: 0x60E8, offset: 0x8F6DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV20initPlacesByCellType33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardVFZTf4nd_n', symObjAddr: 0x5F20, symBinAddr: 0xABC0, symSize: 0x3D0 }
- { offsetInCU: 0x65E9, offset: 0x8FBDB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV23checkCellsByTypeIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x62F0, symBinAddr: 0xAF90, symSize: 0x150 }
- { offsetInCU: 0x6791, offset: 0x8FD83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV18checkPiecesIterate33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6440, symBinAddr: 0xB0E0, symSize: 0x150 }
- { offsetInCU: 0x6859, offset: 0x8FE4B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15checkWaterCells33_DFC7A53241A8EF79AF2B79A48A65C265LLyyAA5BoardV_S2itKFZTf4nnnd_n', symObjAddr: 0x6590, symBinAddr: 0xB230, symSize: 0xB0 }
- { offsetInCU: 0x695B, offset: 0x8FF4D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV6pieces33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x340, symBinAddr: 0x4FE0, symSize: 0x20 }
- { offsetInCU: 0x6975, offset: 0x8FF67, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV14startingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x360, symBinAddr: 0x5000, symSize: 0x30 }
- { offsetInCU: 0x69AB, offset: 0x8FF9D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV15iteratingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x420, symBinAddr: 0x50C0, symSize: 0x30 }
- { offsetInCU: 0x69C5, offset: 0x8FFB7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV12endingChecks33_DFC7A53241A8EF79AF2B79A48A65C265LL_WZ', symObjAddr: 0x4E0, symBinAddr: 0x5180, symSize: 0x20 }
- { offsetInCU: 0x69DF, offset: 0x8FFD1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesV16placesByCellType_WZ', symObjAddr: 0x500, symBinAddr: 0x51A0, symSize: 0x20 }
- { offsetInCU: 0x6F06, offset: 0x904F8, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8setValue_6forKeyyq_n_xtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3AA0, symBinAddr: 0x8740, symSize: 0xB0 }
- { offsetInCU: 0x6F7B, offset: 0x9056D, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3B50, symBinAddr: 0x87F0, symSize: 0x60 }
- { offsetInCU: 0x6FA8, offset: 0x9059A, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3BB0, symBinAddr: 0x8850, symSize: 0x30 }
- { offsetInCU: 0x6FEB, offset: 0x905DD, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3BE0, symBinAddr: 0x8880, symSize: 0x50 }
- { offsetInCU: 0x7063, offset: 0x90655, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x3C30, symBinAddr: 0x88D0, symSize: 0xD0 }
- { offsetInCU: 0x719B, offset: 0x9078D, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3D00, symBinAddr: 0x89A0, symSize: 0x30 }
- { offsetInCU: 0x71BE, offset: 0x907B0, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5.resume.0', symObjAddr: 0x3D30, symBinAddr: 0x89D0, symSize: 0x20 }
- { offsetInCU: 0x71F9, offset: 0x907EB, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x3D50, symBinAddr: 0x89F0, symSize: 0xB0 }
- { offsetInCU: 0x7261, offset: 0x90853, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV12mutatingFind_8isUniques10_HashTableV6BucketV6bucket_Sb5foundtx_SbtF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x3E00, symBinAddr: 0x8AA0, symSize: 0xC0 }
- { offsetInCU: 0x72B7, offset: 0x908A9, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x3EC0, symBinAddr: 0x8B60, symSize: 0x80 }
- { offsetInCU: 0x7324, offset: 0x90916, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x3FA0, symBinAddr: 0x8C40, symSize: 0x1E0 }
- { offsetInCU: 0x7447, offset: 0x90A39, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF14DouShouQiModel5BoardV_SiTB5', symObjAddr: 0x4180, symBinAddr: 0x8E20, symSize: 0x50 }
- { offsetInCU: 0x7518, offset: 0x90B0A, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF14DouShouQiModel5BoardV_TB5', symObjAddr: 0x41D0, symBinAddr: 0x8E70, symSize: 0x210 }
- { offsetInCU: 0x76D8, offset: 0x90CCA, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4470, symBinAddr: 0x9110, symSize: 0x200 }
- { offsetInCU: 0x7751, offset: 0x90D43, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4670, symBinAddr: 0x9310, symSize: 0x210 }
- { offsetInCU: 0x77EB, offset: 0x90DDD, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5', symObjAddr: 0x4880, symBinAddr: 0x9520, symSize: 0x380 }
- { offsetInCU: 0x7988, offset: 0x90F7A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF14DouShouQiModel5BoardV_SiTg5', symObjAddr: 0x4C00, symBinAddr: 0x98A0, symSize: 0x330 }
- { offsetInCU: 0x7AAF, offset: 0x910A1, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x4F30, symBinAddr: 0x9BD0, symSize: 0x140 }
- { offsetInCU: 0x7CC8, offset: 0x912BA, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x5070, symBinAddr: 0x9D10, symSize: 0x160 }
- { offsetInCU: 0x7EF4, offset: 0x914E6, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x51D0, symBinAddr: 0x9E70, symSize: 0x1C0 }
- { offsetInCU: 0x7F58, offset: 0x9154A, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5390, symBinAddr: 0xA030, symSize: 0x2F0 }
- { offsetInCU: 0x8173, offset: 0x91765, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF14DouShouQiModel5PieceV_Tg5', symObjAddr: 0x5680, symBinAddr: 0xA320, symSize: 0x350 }
- { offsetInCU: 0x83B8, offset: 0x919AA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x59D0, symBinAddr: 0xA670, symSize: 0x20 }
- { offsetInCU: 0x83D0, offset: 0x919C2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x59F0, symBinAddr: 0xA690, symSize: 0x20 }
- { offsetInCU: 0x842A, offset: 0x91A1C, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x5A10, symBinAddr: 0xA6B0, symSize: 0x120 }
- { offsetInCU: 0x8582, offset: 0x91B74, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x5B30, symBinAddr: 0xA7D0, symSize: 0x110 }
- { offsetInCU: 0x87DD, offset: 0x91DCF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOACs0F0AAWl', symObjAddr: 0x6830, symBinAddr: 0xB4D0, symSize: 0x30 }
- { offsetInCU: 0x87F1, offset: 0x91DE3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOACs0G0AAWl', symObjAddr: 0x6860, symBinAddr: 0xB500, symSize: 0x30 }
- { offsetInCU: 0x8805, offset: 0x91DF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwCP', symObjAddr: 0x6890, symBinAddr: 0xB530, symSize: 0x30 }
- { offsetInCU: 0x8819, offset: 0x91E0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwxx', symObjAddr: 0x68C0, symBinAddr: 0xB560, symSize: 0x20 }
- { offsetInCU: 0x882D, offset: 0x91E1F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwcp', symObjAddr: 0x68E0, symBinAddr: 0xB580, symSize: 0x30 }
- { offsetInCU: 0x8841, offset: 0x91E33, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwca', symObjAddr: 0x6910, symBinAddr: 0xB5B0, symSize: 0x50 }
- { offsetInCU: 0x8855, offset: 0x91E47, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6960, symBinAddr: 0xB600, symSize: 0x10 }
- { offsetInCU: 0x8869, offset: 0x91E5B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwta', symObjAddr: 0x6970, symBinAddr: 0xB610, symSize: 0x30 }
- { offsetInCU: 0x887D, offset: 0x91E6F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwet', symObjAddr: 0x69A0, symBinAddr: 0xB640, symSize: 0x40 }
- { offsetInCU: 0x8891, offset: 0x91E83, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVwst', symObjAddr: 0x69E0, symBinAddr: 0xB680, symSize: 0x40 }
- { offsetInCU: 0x88A5, offset: 0x91E97, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12ClassicRulesVMa', symObjAddr: 0x6A20, symBinAddr: 0xB6C0, symSize: 0x10 }
- { offsetInCU: 0x88B9, offset: 0x91EAB, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0x6A30, symBinAddr: 0xB6D0, symSize: 0x40 }
- { offsetInCU: 0x897D, offset: 0x91F6F, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy14DouShouQiModel4MoveVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x6B70, symBinAddr: 0xB810, symSize: 0x150 }
- { offsetInCU: 0x8A4E, offset: 0x92040, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF14DouShouQiModel4MoveV_s15EmptyCollectionVyAHGTg5Tf4ndn_n', symObjAddr: 0x6CC0, symBinAddr: 0xB960, symSize: 0xA0 }
- { offsetInCU: 0x8C62, offset: 0x92254, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5', symObjAddr: 0x520, symBinAddr: 0x51C0, symSize: 0x40 }
- { offsetInCU: 0x8C7E, offset: 0x92270, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciM14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTB5.resume.0', symObjAddr: 0x560, symBinAddr: 0x5200, symSize: 0x20 }
- { offsetInCU: 0x8D2A, offset: 0x9231C, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF14DouShouQiModel5PieceV_TB5', symObjAddr: 0x580, symBinAddr: 0x5220, symSize: 0xD0 }
- { offsetInCU: 0x92B5, offset: 0x928A7, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel8CellTypeO_SaySi3row_Si3coltGTg5Tf4gd_n', symObjAddr: 0x6640, symBinAddr: 0xB2E0, symSize: 0x100 }
- { offsetInCU: 0x93E7, offset: 0x929D9, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5BoardV_SiTg5Tf4gd_n', symObjAddr: 0x6740, symBinAddr: 0xB3E0, symSize: 0xF0 }
- { offsetInCU: 0x9537, offset: 0x92B29, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC14DouShouQiModel5OwnerO_AC6PlayerCTg5Tf4gd_n', symObjAddr: 0x6A70, symBinAddr: 0xB710, symSize: 0x100 }
- { offsetInCU: 0x27, offset: 0x92E77, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBE00, symSize: 0x20 }
- { offsetInCU: 0x4B, offset: 0x92E9B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV6ofType7ownedBy9withPieceAcA0eG0O_AA5OwnerOAA0K0VSgtcfC', symObjAddr: 0x0, symBinAddr: 0xBE00, symSize: 0x20 }
- { offsetInCU: 0x9A, offset: 0x92EEA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV11descriptionSSvg', symObjAddr: 0x20, symBinAddr: 0xBE20, symSize: 0x100 }
- { offsetInCU: 0x1DF, offset: 0x9302F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV8cellTypeAA0eG0Ovg', symObjAddr: 0x120, symBinAddr: 0xBF20, symSize: 0x10 }
- { offsetInCU: 0x1FD, offset: 0x9304D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV12initialOwnerAA0G0Ovg', symObjAddr: 0x130, symBinAddr: 0xBF30, symSize: 0x10 }
- { offsetInCU: 0x21B, offset: 0x9306B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvg', symObjAddr: 0x140, symBinAddr: 0xBF40, symSize: 0x10 }
- { offsetInCU: 0x239, offset: 0x93089, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvs', symObjAddr: 0x150, symBinAddr: 0xBF50, symSize: 0x10 }
- { offsetInCU: 0x277, offset: 0x930C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM', symObjAddr: 0x160, symBinAddr: 0xBF60, symSize: 0x20 }
- { offsetInCU: 0x2A5, offset: 0x930F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV5pieceAA5PieceVSgvM.resume.0', symObjAddr: 0x180, symBinAddr: 0xBF80, symSize: 0x10 }
- { offsetInCU: 0x2D0, offset: 0x93120, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZ', symObjAddr: 0x190, symBinAddr: 0xBF90, symSize: 0x10 }
- { offsetInCU: 0x2E4, offset: 0x93134, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1A0, symBinAddr: 0xBFA0, symSize: 0x10 }
- { offsetInCU: 0x30F, offset: 0x9315F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1B0, symBinAddr: 0xBFB0, symSize: 0x10 }
- { offsetInCU: 0x340, offset: 0x93190, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x1C0, symBinAddr: 0xBFC0, symSize: 0x50 }
- { offsetInCU: 0x3B4, offset: 0x93204, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_1, symObjAddr: 0x210, symBinAddr: 0xC010, symSize: 0x10 }
- { offsetInCU: 0x3C8, offset: 0x93218, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwet', symObjAddr: 0x230, symBinAddr: 0xC020, symSize: 0x40 }
- { offsetInCU: 0x3DC, offset: 0x9322C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVwst', symObjAddr: 0x270, symBinAddr: 0xC060, symSize: 0x40 }
- { offsetInCU: 0x3F0, offset: 0x93240, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4CellVMa', symObjAddr: 0x2B0, symBinAddr: 0xC0A0, symSize: 0xA }
- { offsetInCU: 0x2B, offset: 0x9334E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC0B0, symSize: 0x170 }
- { offsetInCU: 0x4F, offset: 0x93372, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGridSaySayAA4CellVGGvpZ', symObjAddr: 0xBD28, symBinAddr: 0x1DB50, symSize: 0x0 }
- { offsetInCU: 0x195, offset: 0x934B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11initialGrid_WZ', symObjAddr: 0x0, symBinAddr: 0xC0B0, symSize: 0x170 }
- { offsetInCU: 0x575, offset: 0x93898, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11createBoardAA0I0VyFZ', symObjAddr: 0x170, symBinAddr: 0xC220, symSize: 0x70 }
- { offsetInCU: 0x5B3, offset: 0x938D6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZ', symObjAddr: 0x1E0, symBinAddr: 0xC290, symSize: 0x10 }
- { offsetInCU: 0x5CE, offset: 0x938F1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVACycfC', symObjAddr: 0x1F0, symBinAddr: 0xC2A0, symSize: 0x30 }
- { offsetInCU: 0x612, offset: 0x93935, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurences8historicACSDyAA5BoardVSiG_SayAA4MoveVGtcfC', symObjAddr: 0x220, symBinAddr: 0xC2D0, symSize: 0x50 }
- { offsetInCU: 0x676, offset: 0x93999, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtF', symObjAddr: 0x270, symBinAddr: 0xC320, symSize: 0x1B0 }
- { offsetInCU: 0x9B0, offset: 0x93CD3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itF', symObjAddr: 0x420, symBinAddr: 0xC4D0, symSize: 0x2A0 }
- { offsetInCU: 0xDB1, offset: 0x940D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itF', symObjAddr: 0x6C0, symBinAddr: 0xC770, symSize: 0x80 }
- { offsetInCU: 0xEAA, offset: 0x941CD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtF', symObjAddr: 0x740, symBinAddr: 0xC7F0, symSize: 0xF0 }
- { offsetInCU: 0x1085, offset: 0x943A8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV13getNextPlayerAA5OwnerOyF', symObjAddr: 0x830, symBinAddr: 0xC8E0, symSize: 0x30 }
- { offsetInCU: 0x116B, offset: 0x9448E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itF', symObjAddr: 0x860, symBinAddr: 0xC910, symSize: 0x130 }
- { offsetInCU: 0x12C3, offset: 0x945E6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VAJtKF', symObjAddr: 0x990, symBinAddr: 0xCA40, symSize: 0x240 }
- { offsetInCU: 0x146A, offset: 0x9478D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10occurencesSDyAA5BoardVSiGvg', symObjAddr: 0xBD0, symBinAddr: 0xCC80, symSize: 0x10 }
- { offsetInCU: 0x147E, offset: 0x947A1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV8historicSayAA4MoveVGvg', symObjAddr: 0xBE0, symBinAddr: 0xCC90, symSize: 0x10 }
- { offsetInCU: 0x14B0, offset: 0x947D3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11createBoardAA0I0VyFZTW', symObjAddr: 0xBF0, symBinAddr: 0xCCA0, symSize: 0x70 }
- { offsetInCU: 0x14FD, offset: 0x94820, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10checkBoardyyAA0I0VKFZTW', symObjAddr: 0xC60, symBinAddr: 0xCD10, symSize: 0x10 }
- { offsetInCU: 0x1535, offset: 0x94858, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP13getNextPlayerAA5OwnerOyFTW', symObjAddr: 0xC70, symBinAddr: 0xCD20, symSize: 0x10 }
- { offsetInCU: 0x1551, offset: 0x94874, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2ofSayAA4MoveVGAA5BoardV_AA5OwnerOtFTW', symObjAddr: 0xC80, symBinAddr: 0xCD30, symSize: 0x10 }
- { offsetInCU: 0x156D, offset: 0x94890, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8getMoves2in2of7fromRow9andColumnSayAA4MoveVGAA5BoardV_AA5OwnerOS2itFTW', symObjAddr: 0xC90, symBinAddr: 0xCD40, symSize: 0x10 }
- { offsetInCU: 0x1589, offset: 0x948AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard7fromRow13andFromColumn02toN00o2ToQ0SbAA0L0V_S4itFTW', symObjAddr: 0xCA0, symBinAddr: 0xCD50, symSize: 0x10 }
- { offsetInCU: 0x15A5, offset: 0x948C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP11isMoveValid7onBoard04withI0SbAA0L0V_AA0I0VtFTW', symObjAddr: 0xCB0, symBinAddr: 0xCD60, symSize: 0x10 }
- { offsetInCU: 0x15C1, offset: 0x948E4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10isGameOver9withBoard16andLastRowPlayed0mN12ColumnPlayerSb_AA6ResultOtAA0L0V_S2itFTW', symObjAddr: 0xCC0, symBinAddr: 0xCD70, symSize: 0x10 }
- { offsetInCU: 0x15DD, offset: 0x94900, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10playedMove_15onStartingBoard012andResultingL0yAA0I0V_AA0L0VALtKFTW', symObjAddr: 0xCD0, symBinAddr: 0xCD80, symSize: 0x10 }
- { offsetInCU: 0x1611, offset: 0x94934, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP10occurencesSDyAA5BoardVSiGvgTW', symObjAddr: 0xCE0, symBinAddr: 0xCD90, symSize: 0x10 }
- { offsetInCU: 0x1654, offset: 0x94977, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVAA0G0A2aDP8historicSayAA4MoveVGvgTW', symObjAddr: 0xCF0, symBinAddr: 0xCDA0, symSize: 0x10 }
- { offsetInCU: 0x1686, offset: 0x949A9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV16checkCellsByType33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xD00, symBinAddr: 0xCDB0, symSize: 0x130 }
- { offsetInCU: 0x18E4, offset: 0x94C07, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV11checkPieces33_2B29F97F1EE5509065CD9853A78D42F5LLyyAA5BoardVKFZTf4nd_n', symObjAddr: 0xE30, symBinAddr: 0xCEE0, symSize: 0x230 }
- { offsetInCU: 0x1CEA, offset: 0x9500D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesV10checkBoardyyAA0I0VKFZTf4nd_n', symObjAddr: 0x1060, symBinAddr: 0xD110, symSize: 0xC0 }
- { offsetInCU: 0x1F87, offset: 0x952AA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwCP', symObjAddr: 0x11C0, symBinAddr: 0xD1D0, symSize: 0x30 }
- { offsetInCU: 0x1F9B, offset: 0x952BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwxx', symObjAddr: 0x11F0, symBinAddr: 0xD200, symSize: 0x20 }
- { offsetInCU: 0x1FAF, offset: 0x952D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwcp', symObjAddr: 0x1210, symBinAddr: 0xD220, symSize: 0x30 }
- { offsetInCU: 0x1FC3, offset: 0x952E6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwca', symObjAddr: 0x1240, symBinAddr: 0xD250, symSize: 0x50 }
- { offsetInCU: 0x1FD7, offset: 0x952FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwta', symObjAddr: 0x12A0, symBinAddr: 0xD2A0, symSize: 0x30 }
- { offsetInCU: 0x1FEB, offset: 0x9530E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwet', symObjAddr: 0x12D0, symBinAddr: 0xD2D0, symSize: 0x40 }
- { offsetInCU: 0x1FFF, offset: 0x95322, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVwst', symObjAddr: 0x1310, symBinAddr: 0xD310, symSize: 0x40 }
- { offsetInCU: 0x2013, offset: 0x95336, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel15VerySimpleRulesVMa', symObjAddr: 0x1350, symBinAddr: 0xD350, symSize: 0xA }
- { offsetInCU: 0x72, offset: 0x95704, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0xD410, symSize: 0x60 }
- { offsetInCU: 0xC3, offset: 0x95755, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfd', symObjAddr: 0x80, symBinAddr: 0xD490, symSize: 0x20 }
- { offsetInCU: 0xE0, offset: 0x95772, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC26addPlayedCallbacksListeneryyyAA4MoveVSg_ACtYaKcF', symObjAddr: 0xA0, symBinAddr: 0xD4B0, symSize: 0xE0 }
- { offsetInCU: 0x1F4, offset: 0x95886, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKF', symObjAddr: 0x180, symBinAddr: 0xD590, symSize: 0x50 }
- { offsetInCU: 0x27B, offset: 0x9590D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY0_', symObjAddr: 0x1D0, symBinAddr: 0xD5E0, symSize: 0x110 }
- { offsetInCU: 0x3D9, offset: 0x95A6B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTQ1_', symObjAddr: 0x2E0, symBinAddr: 0xD6F0, symSize: 0x80 }
- { offsetInCU: 0x490, offset: 0x95B22, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY2_', symObjAddr: 0x360, symBinAddr: 0xD770, symSize: 0x120 }
- { offsetInCU: 0x571, offset: 0x95C03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC12notifyPlayed8withMove03andE0yAA0I0VSg_ACtYaKFTY3_', symObjAddr: 0x480, symBinAddr: 0xD890, symSize: 0x50 }
- { offsetInCU: 0x5E3, offset: 0x95C75, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC4nameSSvg', symObjAddr: 0x4D0, symBinAddr: 0xD8E0, symSize: 0x30 }
- { offsetInCU: 0x610, offset: 0x95CA2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC2idAA5OwnerOvg', symObjAddr: 0x500, symBinAddr: 0xD910, symSize: 0x10 }
- { offsetInCU: 0x673, offset: 0x95D05, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x510, symBinAddr: 0xD920, symSize: 0x90 }
- { offsetInCU: 0x6D0, offset: 0x95D62, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x5A0, symBinAddr: 0xD9B0, symSize: 0x30 }
- { offsetInCU: 0x740, offset: 0x95DD2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCfD', symObjAddr: 0x790, symBinAddr: 0xDBA0, symSize: 0x30 }
- { offsetInCU: 0x784, offset: 0x95E16, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6PlayerCMa', symObjAddr: 0x60, symBinAddr: 0xD470, symSize: 0x20 }
- { offsetInCU: 0x88B, offset: 0x95F1D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TR', symObjAddr: 0x5D0, symBinAddr: 0xD9E0, symSize: 0x70 }
- { offsetInCU: 0x8C5, offset: 0x95F57, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTQ0_', symObjAddr: 0x640, symBinAddr: 0xDA50, symSize: 0x50 }
- { offsetInCU: 0x91F, offset: 0x95FB1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x6B0, symBinAddr: 0xDAC0, symSize: 0x90 }
- { offsetInCU: 0x94F, offset: 0x95FE1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTATQ0_', symObjAddr: 0x740, symBinAddr: 0xDB50, symSize: 0x50 }
- { offsetInCU: 0xA11, offset: 0x960A3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3row_Si3colt_Tg5', symObjAddr: 0x910, symBinAddr: 0xDD20, symSize: 0x110 }
- { offsetInCU: 0xB9C, offset: 0x9622E, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0xA60, symBinAddr: 0xDE30, symSize: 0x120 }
- { offsetInCU: 0xD3F, offset: 0x963D1, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF14DouShouQiModel4CellV_Tg5', symObjAddr: 0xB80, symBinAddr: 0xDF50, symSize: 0x110 }
- { offsetInCU: 0xEED, offset: 0x9657F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0xC90, symBinAddr: 0xE060, symSize: 0x130 }
- { offsetInCU: 0x27, offset: 0x968B8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE3E0, symSize: 0x10 }
- { offsetInCU: 0x3F, offset: 0x968D0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwCP', symObjAddr: 0x40, symBinAddr: 0xE420, symSize: 0x60 }
- { offsetInCU: 0x53, offset: 0x968E4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwxx', symObjAddr: 0xA0, symBinAddr: 0xE480, symSize: 0x40 }
- { offsetInCU: 0x67, offset: 0x968F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwcp', symObjAddr: 0xE0, symBinAddr: 0xE4C0, symSize: 0x60 }
- { offsetInCU: 0x7B, offset: 0x9690C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwca', symObjAddr: 0x140, symBinAddr: 0xE520, symSize: 0xB0 }
- { offsetInCU: 0x8F, offset: 0x96920, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwta', symObjAddr: 0x200, symBinAddr: 0xE5D0, symSize: 0x70 }
- { offsetInCU: 0xA3, offset: 0x96934, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwet', symObjAddr: 0x270, symBinAddr: 0xE640, symSize: 0x50 }
- { offsetInCU: 0xB7, offset: 0x96948, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwst', symObjAddr: 0x2C0, symBinAddr: 0xE690, symSize: 0x50 }
- { offsetInCU: 0xCB, offset: 0x9695C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwug', symObjAddr: 0x310, symBinAddr: 0xE6E0, symSize: 0x30 }
- { offsetInCU: 0xDF, offset: 0x96970, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwup', symObjAddr: 0x340, symBinAddr: 0xE710, symSize: 0x10 }
- { offsetInCU: 0xF3, offset: 0x96984, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOwui', symObjAddr: 0x350, symBinAddr: 0xE720, symSize: 0x30 }
- { offsetInCU: 0x107, offset: 0x96998, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOMa', symObjAddr: 0x380, symBinAddr: 0xE750, symSize: 0xA }
- { offsetInCU: 0x12C, offset: 0x969BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP7_domainSSvgTW', symObjAddr: 0x0, symBinAddr: 0xE3E0, symSize: 0x10 }
- { offsetInCU: 0x148, offset: 0x969D9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP5_codeSivgTW', symObjAddr: 0x10, symBinAddr: 0xE3F0, symSize: 0x10 }
- { offsetInCU: 0x164, offset: 0x969F5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x20, symBinAddr: 0xE400, symSize: 0x10 }
- { offsetInCU: 0x180, offset: 0x96A11, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel9GameErrorOs0F0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x30, symBinAddr: 0xE410, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x96AA6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE760, symSize: 0x40 }
- { offsetInCU: 0x52, offset: 0x96AD1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKF', symObjAddr: 0x0, symBinAddr: 0xE760, symSize: 0x40 }
- { offsetInCU: 0xBB, offset: 0x96B3A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY0_', symObjAddr: 0x40, symBinAddr: 0xE7A0, symSize: 0x200 }
- { offsetInCU: 0x394, offset: 0x96E13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTQ1_', symObjAddr: 0x240, symBinAddr: 0xE9A0, symSize: 0x80 }
- { offsetInCU: 0x48D, offset: 0x96F0C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY2_', symObjAddr: 0x2C0, symBinAddr: 0xEA20, symSize: 0x140 }
- { offsetInCU: 0x5AF, offset: 0x9702E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC10chooseMove2in4withyAA5BoardV_AA5Rules_ptYaKFTY3_', symObjAddr: 0x400, symBinAddr: 0xEB60, symSize: 0x60 }
- { offsetInCU: 0x696, offset: 0x97115, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x490, symBinAddr: 0xEBF0, symSize: 0x90 }
- { offsetInCU: 0x72D, offset: 0x971AC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x520, symBinAddr: 0xEC80, symSize: 0x70 }
- { offsetInCU: 0x7B6, offset: 0x97235, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfd', symObjAddr: 0x590, symBinAddr: 0xECF0, symSize: 0x20 }
- { offsetInCU: 0x815, offset: 0x97294, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCfD', symObjAddr: 0x5B0, symBinAddr: 0xED10, symSize: 0x30 }
- { offsetInCU: 0xA42, offset: 0x974C1, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0x460, symBinAddr: 0xEBC0, symSize: 0x30 }
- { offsetInCU: 0xB2A, offset: 0x975A9, size: 0x8, addend: 0x0, symName: '_$sSGsE4next10upperBoundqd__qd___ts17FixedWidthIntegerRd__SURd__lFs27SystemRandomNumberGeneratorV_SuTg5', symObjAddr: 0x5E0, symBinAddr: 0xED40, symSize: 0xB0 }
- { offsetInCU: 0xBF7, offset: 0x97676, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel12RandomPlayerCMa', symObjAddr: 0x690, symBinAddr: 0xEDF0, symSize: 0x14 }
- { offsetInCU: 0x27, offset: 0x97832, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xEE10, symSize: 0x40 }
- { offsetInCU: 0x6C, offset: 0x97877, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO8allCasesSayACGvgZ', symObjAddr: 0x0, symBinAddr: 0xEE10, symSize: 0x40 }
- { offsetInCU: 0xDB, offset: 0x978E6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO2eeoiySbAC_ACtFZ', symObjAddr: 0x80, symBinAddr: 0xEE50, symSize: 0x10 }
- { offsetInCU: 0x10A, offset: 0x97915, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO4hash4intoys6HasherVz_tF', symObjAddr: 0x90, symBinAddr: 0xEE60, symSize: 0x20 }
- { offsetInCU: 0x1A0, offset: 0x979AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeO9hashValueSivg', symObjAddr: 0xB0, symBinAddr: 0xEE80, symSize: 0x40 }
- { offsetInCU: 0x29B, offset: 0x97AA6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF0, symBinAddr: 0xEEC0, symSize: 0x10 }
- { offsetInCU: 0x2F1, offset: 0x97AFC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x100, symBinAddr: 0xEED0, symSize: 0x40 }
- { offsetInCU: 0x3D5, offset: 0x97BE0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x140, symBinAddr: 0xEF10, symSize: 0x20 }
- { offsetInCU: 0x461, offset: 0x97C6C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x270, symBinAddr: 0xF040, symSize: 0x50 }
- { offsetInCU: 0x4FD, offset: 0x97D08, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASQWb', symObjAddr: 0x1A0, symBinAddr: 0xEF70, symSize: 0x10 }
- { offsetInCU: 0x511, offset: 0x97D1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOACSQAAWl', symObjAddr: 0x1B0, symBinAddr: 0xEF80, symSize: 0x30 }
- { offsetInCU: 0x525, offset: 0x97D30, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x1E0, symBinAddr: 0xEFB0, symSize: 0x10 }
- { offsetInCU: 0x539, offset: 0x97D44, size: 0x8, addend: 0x0, symName: '_$sSay14DouShouQiModel8CellTypeOGSayxGSlsWl', symObjAddr: 0x1F0, symBinAddr: 0xEFC0, symSize: 0x40 }
- { offsetInCU: 0x54D, offset: 0x97D58, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x230, symBinAddr: 0xF000, symSize: 0x40 }
- { offsetInCU: 0x561, offset: 0x97D6C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwet', symObjAddr: 0x2E0, symBinAddr: 0xF090, symSize: 0x80 }
- { offsetInCU: 0x575, offset: 0x97D80, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwst', symObjAddr: 0x360, symBinAddr: 0xF110, symSize: 0xD0 }
- { offsetInCU: 0x589, offset: 0x97D94, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwug', symObjAddr: 0x430, symBinAddr: 0xF1E0, symSize: 0x10 }
- { offsetInCU: 0x59D, offset: 0x97DA8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwup', symObjAddr: 0x440, symBinAddr: 0xF1F0, symSize: 0x10 }
- { offsetInCU: 0x5B1, offset: 0x97DBC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOwui', symObjAddr: 0x450, symBinAddr: 0xF200, symSize: 0x10 }
- { offsetInCU: 0x5C5, offset: 0x97DD0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOMa', symObjAddr: 0x460, symBinAddr: 0xF210, symSize: 0xA }
- { offsetInCU: 0x634, offset: 0x97E3F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8CellTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x160, symBinAddr: 0xEF30, symSize: 0x40 }
- { offsetInCU: 0x2B, offset: 0x97F84, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xF220, symSize: 0x60 }
- { offsetInCU: 0xA6, offset: 0x97FFF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV8withGridACSgSaySayAA4CellVGG_tcfC', symObjAddr: 0x0, symBinAddr: 0xF220, symSize: 0x60 }
- { offsetInCU: 0x285, offset: 0x981DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPieces2ofSiAA5OwnerO_tF', symObjAddr: 0x60, symBinAddr: 0xF280, symSize: 0x1B0 }
- { offsetInCU: 0x529, offset: 0x98482, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4hash4intoys6HasherVz_tF', symObjAddr: 0x210, symBinAddr: 0xF430, symSize: 0xB0 }
- { offsetInCU: 0x764, offset: 0x986BD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6nbRowsSivg', symObjAddr: 0x2C0, symBinAddr: 0xF4E0, symSize: 0x10 }
- { offsetInCU: 0x782, offset: 0x986DB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9nbColumnsSivg', symObjAddr: 0x2D0, symBinAddr: 0xF4F0, symSize: 0x10 }
- { offsetInCU: 0x7A0, offset: 0x986F9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV4gridSaySayAA4CellVGGvg', symObjAddr: 0x2E0, symBinAddr: 0xF500, symSize: 0x10 }
- { offsetInCU: 0x7BE, offset: 0x98717, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11countPiecesSi04nbOfgI7Player1_Si0higI7Player2tyF', symObjAddr: 0x2F0, symBinAddr: 0xF510, symSize: 0xA0 }
- { offsetInCU: 0x9F2, offset: 0x9894B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV6insert5piece5atRow9andColumnAA0E6ResultOAA5PieceV_S2itF', symObjAddr: 0x390, symBinAddr: 0xF5B0, symSize: 0x110 }
- { offsetInCU: 0xBA1, offset: 0x98AFA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV11removePiece5atRow9andColumnAA0E6ResultOSi_SitF', symObjAddr: 0x4A0, symBinAddr: 0xF6C0, symSize: 0xF0 }
- { offsetInCU: 0xD6F, offset: 0x98CC8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV2eeoiySbAC_ACtFZ', symObjAddr: 0x590, symBinAddr: 0xF7B0, symSize: 0x30 }
- { offsetInCU: 0xDB1, offset: 0x98D0A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardV9hashValueSivg', symObjAddr: 0x5C0, symBinAddr: 0xF7E0, symSize: 0x50 }
- { offsetInCU: 0xE3D, offset: 0x98D96, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH9hashValueSivgTW', symObjAddr: 0x610, symBinAddr: 0xF830, symSize: 0x50 }
- { offsetInCU: 0xECC, offset: 0x98E25, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x660, symBinAddr: 0xF880, symSize: 0x10 }
- { offsetInCU: 0xEFA, offset: 0x98E53, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x6C0, symBinAddr: 0xF8E0, symSize: 0x30 }
- { offsetInCU: 0x1189, offset: 0x990E2, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4MoveV_Tg5', symObjAddr: 0x6F0, symBinAddr: 0xF910, symSize: 0x20 }
- { offsetInCU: 0x11C1, offset: 0x9911A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF14DouShouQiModel4CellV_Tg5', symObjAddr: 0x710, symBinAddr: 0xF930, symSize: 0x20 }
- { offsetInCU: 0x11F9, offset: 0x99152, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay14DouShouQiModel4CellVG_Tg5', symObjAddr: 0x730, symBinAddr: 0xF950, symSize: 0x20 }
- { offsetInCU: 0x1231, offset: 0x9918A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASQWb', symObjAddr: 0x8E0, symBinAddr: 0xFB00, symSize: 0x10 }
- { offsetInCU: 0x1245, offset: 0x9919E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVACSQAAWl', symObjAddr: 0x8F0, symBinAddr: 0xFB10, symSize: 0x30 }
- { offsetInCU: 0x1259, offset: 0x991B2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwCP', symObjAddr: 0x920, symBinAddr: 0xFB40, symSize: 0x30 }
- { offsetInCU: 0x126D, offset: 0x991C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwxx', symObjAddr: 0x950, symBinAddr: 0xFB70, symSize: 0x10 }
- { offsetInCU: 0x1281, offset: 0x991DA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwcp', symObjAddr: 0x960, symBinAddr: 0xFB80, symSize: 0x30 }
- { offsetInCU: 0x1295, offset: 0x991EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwca', symObjAddr: 0x990, symBinAddr: 0xFBB0, symSize: 0x40 }
- { offsetInCU: 0x12A9, offset: 0x99202, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0x9D0, symBinAddr: 0xFBF0, symSize: 0x20 }
- { offsetInCU: 0x12BD, offset: 0x99216, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwta', symObjAddr: 0x9F0, symBinAddr: 0xFC10, symSize: 0x30 }
- { offsetInCU: 0x12D1, offset: 0x9922A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwet', symObjAddr: 0xA20, symBinAddr: 0xFC40, symSize: 0x50 }
- { offsetInCU: 0x12E5, offset: 0x9923E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVwst', symObjAddr: 0xA70, symBinAddr: 0xFC90, symSize: 0x40 }
- { offsetInCU: 0x12F9, offset: 0x99252, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVMa', symObjAddr: 0xAB0, symBinAddr: 0xFCD0, symSize: 0xA }
- { offsetInCU: 0x1458, offset: 0x993B1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x670, symBinAddr: 0xF890, symSize: 0x50 }
- { offsetInCU: 0x1496, offset: 0x993EF, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ14DouShouQiModel4CellV_Tg5Tf4nnd_n', symObjAddr: 0x750, symBinAddr: 0xF970, symSize: 0x80 }
- { offsetInCU: 0x156A, offset: 0x994C3, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZSay14DouShouQiModel4CellVG_Tg5Tf4nnd_n', symObjAddr: 0x7D0, symBinAddr: 0xF9F0, symSize: 0x110 }
- { offsetInCU: 0x27, offset: 0x99713, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xFCE0, symSize: 0x20 }
- { offsetInCU: 0x46, offset: 0x99732, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9withOwner9andAnimalAcA0G0O_AA0I0OtcfC', symObjAddr: 0x0, symBinAddr: 0xFCE0, symSize: 0x20 }
- { offsetInCU: 0x85, offset: 0x99771, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV11descriptionSSvg', symObjAddr: 0x20, symBinAddr: 0xFD00, symSize: 0xC0 }
- { offsetInCU: 0x176, offset: 0x99862, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV5ownerAA5OwnerOvg', symObjAddr: 0xE0, symBinAddr: 0xFDC0, symSize: 0x10 }
- { offsetInCU: 0x194, offset: 0x99880, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV6animalAA6AnimalOvg', symObjAddr: 0xF0, symBinAddr: 0xFDD0, symSize: 0x10 }
- { offsetInCU: 0x1B2, offset: 0x9989E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV4hash4intoys6HasherVz_tF', symObjAddr: 0x100, symBinAddr: 0xFDE0, symSize: 0x40 }
- { offsetInCU: 0x2E8, offset: 0x999D4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV2eeoiySbAC_ACtFZ', symObjAddr: 0x140, symBinAddr: 0xFE20, symSize: 0x20 }
- { offsetInCU: 0x330, offset: 0x99A1C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceV9hashValueSivg', symObjAddr: 0x160, symBinAddr: 0xFE40, symSize: 0x50 }
- { offsetInCU: 0x4C7, offset: 0x99BB3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x1B0, symBinAddr: 0xFE90, symSize: 0x10 }
- { offsetInCU: 0x4F2, offset: 0x99BDE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH9hashValueSivgTW', symObjAddr: 0x1C0, symBinAddr: 0xFEA0, symSize: 0x50 }
- { offsetInCU: 0x6A6, offset: 0x99D92, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x210, symBinAddr: 0xFEF0, symSize: 0x40 }
- { offsetInCU: 0x80B, offset: 0x99EF7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2A0, symBinAddr: 0xFF80, symSize: 0x20 }
- { offsetInCU: 0x8DD, offset: 0x99FC9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASQWb', symObjAddr: 0x2C0, symBinAddr: 0xFFA0, symSize: 0x10 }
- { offsetInCU: 0x8F1, offset: 0x99FDD, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVACSQAAWl', symObjAddr: 0x2D0, symBinAddr: 0xFFB0, symSize: 0x30 }
- { offsetInCU: 0x905, offset: 0x99FF1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwet', symObjAddr: 0x320, symBinAddr: 0xFFE0, symSize: 0x90 }
- { offsetInCU: 0x919, offset: 0x9A005, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVwst', symObjAddr: 0x3B0, symBinAddr: 0x10070, symSize: 0xE0 }
- { offsetInCU: 0x92D, offset: 0x9A019, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVMa', symObjAddr: 0x490, symBinAddr: 0x10150, symSize: 0xA }
- { offsetInCU: 0x9D2, offset: 0x9A0BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5PieceVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x250, symBinAddr: 0xFF30, symSize: 0x50 }
- { offsetInCU: 0x27, offset: 0x9A2C6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10160, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x9A2EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10160, symSize: 0x10 }
- { offsetInCU: 0x6E, offset: 0x9A30D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x50, symBinAddr: 0x101B0, symSize: 0x10 }
- { offsetInCU: 0x9F, offset: 0x9A33E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x60, symBinAddr: 0x101C0, symSize: 0x110 }
- { offsetInCU: 0x15B, offset: 0x9A3FA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwCP', symObjAddr: 0x170, symBinAddr: 0x102D0, symSize: 0x30 }
- { offsetInCU: 0x16F, offset: 0x9A40E, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x1B0, symBinAddr: 0x10300, symSize: 0x20 }
- { offsetInCU: 0x183, offset: 0x9A422, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwet', symObjAddr: 0x1D0, symBinAddr: 0x10320, symSize: 0x50 }
- { offsetInCU: 0x197, offset: 0x9A436, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwst', symObjAddr: 0x220, symBinAddr: 0x10370, symSize: 0x50 }
- { offsetInCU: 0x1AB, offset: 0x9A44A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwug', symObjAddr: 0x270, symBinAddr: 0x103C0, symSize: 0x20 }
- { offsetInCU: 0x1BF, offset: 0x9A45E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwup', symObjAddr: 0x290, symBinAddr: 0x103E0, symSize: 0x10 }
- { offsetInCU: 0x1D3, offset: 0x9A472, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOwui', symObjAddr: 0x2A0, symBinAddr: 0x103F0, symSize: 0x20 }
- { offsetInCU: 0x1E7, offset: 0x9A486, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOMa', symObjAddr: 0x2C0, symBinAddr: 0x10410, symSize: 0xA }
- { offsetInCU: 0x20C, offset: 0x9A4AB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP7_domainSSvgTW', symObjAddr: 0x10, symBinAddr: 0x10170, symSize: 0x10 }
- { offsetInCU: 0x228, offset: 0x9A4C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP5_codeSivgTW', symObjAddr: 0x20, symBinAddr: 0x10180, symSize: 0x10 }
- { offsetInCU: 0x244, offset: 0x9A4E3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP9_userInfoyXlSgvgTW', symObjAddr: 0x30, symBinAddr: 0x10190, symSize: 0x10 }
- { offsetInCU: 0x260, offset: 0x9A4FF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel17InvalidBoardErrorOs0G0AAsADP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x40, symBinAddr: 0x101A0, symSize: 0x10 }
- { offsetInCU: 0x27, offset: 0x9A5A5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10420, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x9A5C9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x10420, symSize: 0x10 }
- { offsetInCU: 0x7A, offset: 0x9A5F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO17simpleDescriptionSSvg', symObjAddr: 0x10, symBinAddr: 0x10430, symSize: 0x20 }
- { offsetInCU: 0xA5, offset: 0x9A623, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO4hash4intoys6HasherVz_tF', symObjAddr: 0x30, symBinAddr: 0x10450, symSize: 0x20 }
- { offsetInCU: 0x13B, offset: 0x9A6B9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerO9hashValueSivg', symObjAddr: 0x50, symBinAddr: 0x10470, symSize: 0x40 }
- { offsetInCU: 0x236, offset: 0x9A7B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x90, symBinAddr: 0x104B0, symSize: 0x10 }
- { offsetInCU: 0x28C, offset: 0x9A80A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH9hashValueSivgTW', symObjAddr: 0xA0, symBinAddr: 0x104C0, symSize: 0x40 }
- { offsetInCU: 0x370, offset: 0x9A8EE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE0, symBinAddr: 0x10500, symSize: 0x20 }
- { offsetInCU: 0x3F9, offset: 0x9A977, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASQWb', symObjAddr: 0x140, symBinAddr: 0x10560, symSize: 0x10 }
- { offsetInCU: 0x40D, offset: 0x9A98B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOACSQAAWl', symObjAddr: 0x150, symBinAddr: 0x10570, symSize: 0x30 }
- { offsetInCU: 0x421, offset: 0x9A99F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwet', symObjAddr: 0x1A0, symBinAddr: 0x105A0, symSize: 0x80 }
- { offsetInCU: 0x435, offset: 0x9A9B3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwst', symObjAddr: 0x220, symBinAddr: 0x10620, symSize: 0xD0 }
- { offsetInCU: 0x449, offset: 0x9A9C7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwug', symObjAddr: 0x2F0, symBinAddr: 0x106F0, symSize: 0x10 }
- { offsetInCU: 0x45D, offset: 0x9A9DB, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwup', symObjAddr: 0x300, symBinAddr: 0x10700, symSize: 0x10 }
- { offsetInCU: 0x471, offset: 0x9A9EF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOwui', symObjAddr: 0x310, symBinAddr: 0x10710, symSize: 0x10 }
- { offsetInCU: 0x485, offset: 0x9AA03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOMa', symObjAddr: 0x320, symBinAddr: 0x10720, symSize: 0xA }
- { offsetInCU: 0x4DE, offset: 0x9AA5C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5OwnerOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x100, symBinAddr: 0x10520, symSize: 0x40 }
- { offsetInCU: 0x27, offset: 0x9AB88, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x10730, symSize: 0x70 }
- { offsetInCU: 0xD3, offset: 0x9AC34, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfc', symObjAddr: 0x0, symBinAddr: 0x10730, symSize: 0x70 }
- { offsetInCU: 0x145, offset: 0x9ACA6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfd', symObjAddr: 0x70, symBinAddr: 0x107A0, symSize: 0x20 }
- { offsetInCU: 0x1AA, offset: 0x9AD0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerC8withName5andIdACSgSS_AA5OwnerOtcfC', symObjAddr: 0x90, symBinAddr: 0x107C0, symSize: 0x90 }
- { offsetInCU: 0x248, offset: 0x9ADA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCfD', symObjAddr: 0x120, symBinAddr: 0x10850, symSize: 0x30 }
- { offsetInCU: 0x2A2, offset: 0x9AE03, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel8IAPlayerCMa', symObjAddr: 0x150, symBinAddr: 0x10880, symSize: 0x14 }
- { offsetInCU: 0x27, offset: 0x9AED1, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x108A0, symSize: 0x10 }
- { offsetInCU: 0x46, offset: 0x9AEF0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZ', symObjAddr: 0x0, symBinAddr: 0x108A0, symSize: 0x10 }
- { offsetInCU: 0x5A, offset: 0x9AF04, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2of7fromRow13andFromColumn02toH00i2ToK0AcA5OwnerO_S4itcfC', symObjAddr: 0x10, symBinAddr: 0x108B0, symSize: 0x20 }
- { offsetInCU: 0xC1, offset: 0x9AF6B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV5ownerAA5OwnerOvg', symObjAddr: 0x30, symBinAddr: 0x108D0, symSize: 0x10 }
- { offsetInCU: 0xDF, offset: 0x9AF89, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV9rowOriginSivg', symObjAddr: 0x40, symBinAddr: 0x108E0, symSize: 0x10 }
- { offsetInCU: 0xFD, offset: 0x9AFA7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV12columnOriginSivg', symObjAddr: 0x50, symBinAddr: 0x108F0, symSize: 0x10 }
- { offsetInCU: 0x11B, offset: 0x9AFC5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV14rowDestinationSivg', symObjAddr: 0x60, symBinAddr: 0x10900, symSize: 0x10 }
- { offsetInCU: 0x139, offset: 0x9AFE3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV17columnDestinationSivg', symObjAddr: 0x70, symBinAddr: 0x10910, symSize: 0x10 }
- { offsetInCU: 0x157, offset: 0x9B001, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV11descriptionSSvg', symObjAddr: 0x80, symBinAddr: 0x10920, symSize: 0x1E0 }
- { offsetInCU: 0x287, offset: 0x9B131, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVs23CustomStringConvertibleAAsADP11descriptionSSvgTW', symObjAddr: 0x260, symBinAddr: 0x10B00, symSize: 0x10 }
- { offsetInCU: 0x2B2, offset: 0x9B15C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x270, symBinAddr: 0x10B10, symSize: 0x10 }
- { offsetInCU: 0x2E3, offset: 0x9B18D, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x280, symBinAddr: 0x10B20, symSize: 0x40 }
- { offsetInCU: 0x365, offset: 0x9B20F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwCP', symObjAddr: 0x2C0, symBinAddr: 0x10B60, symSize: 0x30 }
- { offsetInCU: 0x379, offset: 0x9B223, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x300, symBinAddr: 0x10B90, symSize: 0x20 }
- { offsetInCU: 0x38D, offset: 0x9B237, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwet', symObjAddr: 0x320, symBinAddr: 0x10BB0, symSize: 0x40 }
- { offsetInCU: 0x3A1, offset: 0x9B24B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVwst', symObjAddr: 0x360, symBinAddr: 0x10BF0, symSize: 0x50 }
- { offsetInCU: 0x3B5, offset: 0x9B25F, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVMa', symObjAddr: 0x3B0, symBinAddr: 0x10C40, symSize: 0xA }
- { offsetInCU: 0x27, offset: 0x9B352, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x10C50, symSize: 0x10 }
- { offsetInCU: 0x4B, offset: 0x9B376, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueSivg', symObjAddr: 0x0, symBinAddr: 0x10C50, symSize: 0x10 }
- { offsetInCU: 0x66, offset: 0x9B391, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalO8rawValueACSgSi_tcfC', symObjAddr: 0x10, symBinAddr: 0x10C60, symSize: 0x20 }
- { offsetInCU: 0xBA, offset: 0x9B3E5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x130, symBinAddr: 0x10D80, symSize: 0x10 }
- { offsetInCU: 0xD6, offset: 0x9B401, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x140, symBinAddr: 0x10D90, symSize: 0x20 }
- { offsetInCU: 0x10B, offset: 0x9B436, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASQWb', symObjAddr: 0x40, symBinAddr: 0x10C90, symSize: 0x10 }
- { offsetInCU: 0x11F, offset: 0x9B44A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOACSQAAWl', symObjAddr: 0x50, symBinAddr: 0x10CA0, symSize: 0x30 }
- { offsetInCU: 0x149, offset: 0x9B474, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwet', symObjAddr: 0x180, symBinAddr: 0x10DB0, symSize: 0x80 }
- { offsetInCU: 0x15D, offset: 0x9B488, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwst', symObjAddr: 0x200, symBinAddr: 0x10E30, symSize: 0xD0 }
- { offsetInCU: 0x171, offset: 0x9B49C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwug', symObjAddr: 0x2D0, symBinAddr: 0x10F00, symSize: 0x10 }
- { offsetInCU: 0x185, offset: 0x9B4B0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwup', symObjAddr: 0x2E0, symBinAddr: 0x10F10, symSize: 0x10 }
- { offsetInCU: 0x199, offset: 0x9B4C4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOwui', symObjAddr: 0x2F0, symBinAddr: 0x10F20, symSize: 0x10 }
- { offsetInCU: 0x1AD, offset: 0x9B4D8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOMa', symObjAddr: 0x300, symBinAddr: 0x10F30, symSize: 0xA }
- { offsetInCU: 0x1E8, offset: 0x9B513, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x30, symBinAddr: 0x10C80, symSize: 0x10 }
- { offsetInCU: 0x279, offset: 0x9B5A4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH9hashValueSivgTW', symObjAddr: 0x80, symBinAddr: 0x10CD0, symSize: 0x40 }
- { offsetInCU: 0x351, offset: 0x9B67C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xC0, symBinAddr: 0x10D10, symSize: 0x30 }
- { offsetInCU: 0x3CD, offset: 0x9B6F8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel6AnimalOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF0, symBinAddr: 0x10D40, symSize: 0x40 }
- { offsetInCU: 0x97, offset: 0x9B898, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvg', symObjAddr: 0xA0, symBinAddr: 0x10FE0, symSize: 0x40 }
- { offsetInCU: 0xDE, offset: 0x9B8DF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvg', symObjAddr: 0x140, symBinAddr: 0x11080, symSize: 0x40 }
- { offsetInCU: 0xFB, offset: 0x9B8FC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC7playersSDyAA5OwnerOAA6PlayerCGvg', symObjAddr: 0x1B0, symBinAddr: 0x110F0, symSize: 0x10 }
- { offsetInCU: 0x128, offset: 0x9B929, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfC', symObjAddr: 0x1C0, symBinAddr: 0x11100, symSize: 0x60 }
- { offsetInCU: 0x14D, offset: 0x9B94E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfc', symObjAddr: 0x220, symBinAddr: 0x11160, symSize: 0x4F0 }
- { offsetInCU: 0x563, offset: 0x9BD64, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_', symObjAddr: 0x800, symBinAddr: 0x116A0, symSize: 0xB0 }
- { offsetInCU: 0x612, offset: 0x9BE13, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TQ0_', symObjAddr: 0x8B0, symBinAddr: 0x11750, symSize: 0x70 }
- { offsetInCU: 0x6A3, offset: 0x9BEA4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TY2_', symObjAddr: 0x920, symBinAddr: 0x117C0, symSize: 0x50 }
- { offsetInCU: 0x6E8, offset: 0x9BEE9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_', symObjAddr: 0x970, symBinAddr: 0x11810, symSize: 0xB0 }
- { offsetInCU: 0x797, offset: 0x9BF98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TQ0_', symObjAddr: 0xA20, symBinAddr: 0x118C0, symSize: 0x70 }
- { offsetInCU: 0x828, offset: 0x9C029, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY1_', symObjAddr: 0xA90, symBinAddr: 0x11930, symSize: 0x30 }
- { offsetInCU: 0x882, offset: 0x9C083, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TY2_', symObjAddr: 0xAC0, symBinAddr: 0x11960, symSize: 0x50 }
- { offsetInCU: 0x8C7, offset: 0x9C0C8, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfC', symObjAddr: 0xB10, symBinAddr: 0x119B0, symSize: 0x60 }
- { offsetInCU: 0x8EC, offset: 0x9C0ED, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withBoard8andRules0H7Player10H7Player2AcA0G0V_AA0I0_pAA6PlayerCALtKcfc', symObjAddr: 0xB70, symBinAddr: 0x11A10, symSize: 0x320 }
- { offsetInCU: 0xA27, offset: 0x9C228, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15StartedListeneryyyAA5BoardVcF', symObjAddr: 0xE90, symBinAddr: 0x11D30, symSize: 0xD0 }
- { offsetInCU: 0xB3B, offset: 0x9C33C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC25addPlayerNotifiedListeneryyyAA5BoardV_AA0G0CtYaKcF', symObjAddr: 0xF60, symBinAddr: 0x11E00, symSize: 0xD0 }
- { offsetInCU: 0xC4F, offset: 0x9C450, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE15ChangedListeneryyyACYacF', symObjAddr: 0x10F0, symBinAddr: 0x11F90, symSize: 0xD0 }
- { offsetInCU: 0xD63, offset: 0x9C564, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC03addE12OverListeneryyyAA5BoardV_AA6ResultOAA6PlayerCSgtcF', symObjAddr: 0x1220, symBinAddr: 0x120C0, symSize: 0xD0 }
- { offsetInCU: 0xE77, offset: 0x9C678, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC30addMoveChosenCallbacksListeneryyyAA5BoardV_AA0G0VAA6PlayerCtcF', symObjAddr: 0x12F0, symBinAddr: 0x12190, symSize: 0xD0 }
- { offsetInCU: 0xF8B, offset: 0x9C78C, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC31addInvalidMoveCallbacksListeneryyyAA5BoardV_AA0H0VAA6PlayerCSbtcF', symObjAddr: 0x13C0, symBinAddr: 0x12260, symSize: 0xE0 }
- { offsetInCU: 0x109F, offset: 0x9C8A0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addBoardChangedListeneryyyAA0G0VcF', symObjAddr: 0x14A0, symBinAddr: 0x12340, symSize: 0xE0 }
- { offsetInCU: 0x11B3, offset: 0x9C9B4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC23addPieceRemovedListeneryyySi_SiAA0G0VtcF', symObjAddr: 0x1580, symBinAddr: 0x12420, symSize: 0xE0 }
- { offsetInCU: 0x12E5, offset: 0x9CAE6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC18notifyPieceRemoved33_4E9958627B7DCD90B6D32369387417C3LLyySi_SiAA0G0VtF', symObjAddr: 0x1660, symBinAddr: 0x12500, symSize: 0xC0 }
- { offsetInCU: 0x1497, offset: 0x9CC98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKF', symObjAddr: 0x1720, symBinAddr: 0x125C0, symSize: 0x60 }
- { offsetInCU: 0x1876, offset: 0x9D077, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY0_', symObjAddr: 0x1780, symBinAddr: 0x12620, symSize: 0xD90 }
- { offsetInCU: 0x25A8, offset: 0x9DDA9, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ1_', symObjAddr: 0x2510, symBinAddr: 0x133B0, symSize: 0x70 }
- { offsetInCU: 0x26D3, offset: 0x9DED4, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY2_', symObjAddr: 0x2580, symBinAddr: 0x13420, symSize: 0x280 }
- { offsetInCU: 0x29BD, offset: 0x9E1BE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTQ3_', symObjAddr: 0x2800, symBinAddr: 0x136A0, symSize: 0x80 }
- { offsetInCU: 0x2AAE, offset: 0x9E2AF, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY4_', symObjAddr: 0x2880, symBinAddr: 0x13720, symSize: 0x150 }
- { offsetInCU: 0x2BE9, offset: 0x9E3EA, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC8onPlayed4with4fromyAA4MoveVSg_AA6PlayerCtYaKFTY5_', symObjAddr: 0x29D0, symBinAddr: 0x13870, symSize: 0x70 }
- { offsetInCU: 0x2C97, offset: 0x9E498, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC6isOverSbvg', symObjAddr: 0x2A40, symBinAddr: 0x138E0, symSize: 0x30 }
- { offsetInCU: 0x2CB4, offset: 0x9E4B5, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKF', symObjAddr: 0x2A70, symBinAddr: 0x13910, symSize: 0x30 }
- { offsetInCU: 0x2D65, offset: 0x9E566, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY0_', symObjAddr: 0x2AA0, symBinAddr: 0x13940, symSize: 0x3D0 }
- { offsetInCU: 0x3221, offset: 0x9EA22, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ1_', symObjAddr: 0x2E70, symBinAddr: 0x13D10, symSize: 0x70 }
- { offsetInCU: 0x32B5, offset: 0x9EAB6, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY2_', symObjAddr: 0x2EE0, symBinAddr: 0x13D80, symSize: 0x270 }
- { offsetInCU: 0x350A, offset: 0x9ED0B, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTQ3_', symObjAddr: 0x3150, symBinAddr: 0x13FF0, symSize: 0x80 }
- { offsetInCU: 0x35AB, offset: 0x9EDAC, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY4_', symObjAddr: 0x31D0, symBinAddr: 0x14070, symSize: 0x140 }
- { offsetInCU: 0x3697, offset: 0x9EE98, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5startyyYaKFTY5_', symObjAddr: 0x3310, symBinAddr: 0x141B0, symSize: 0x70 }
- { offsetInCU: 0x36E6, offset: 0x9EEE7, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfd', symObjAddr: 0x3380, symBinAddr: 0x14220, symSize: 0x80 }
- { offsetInCU: 0x3713, offset: 0x9EF14, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCfD', symObjAddr: 0x3400, symBinAddr: 0x142A0, symSize: 0x20 }
- { offsetInCU: 0x3741, offset: 0x9EF42, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTK', symObjAddr: 0x0, symBinAddr: 0x10F40, symSize: 0x40 }
- { offsetInCU: 0x3777, offset: 0x9EF78, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5boardAA5BoardVvpACTk', symObjAddr: 0x40, symBinAddr: 0x10F80, symSize: 0x60 }
- { offsetInCU: 0x37AF, offset: 0x9EFB0, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC5rulesAA5Rules_pvpACTk', symObjAddr: 0xE0, symBinAddr: 0x11020, symSize: 0x60 }
- { offsetInCU: 0x37F2, offset: 0x9EFF3, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5Rules_pWOc', symObjAddr: 0x180, symBinAddr: 0x110C0, symSize: 0x30 }
- { offsetInCU: 0x3929, offset: 0x9F12A, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0x770, symBinAddr: 0x11650, symSize: 0x30 }
- { offsetInCU: 0x393D, offset: 0x9F13E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCMa', symObjAddr: 0x7A0, symBinAddr: 0x11680, symSize: 0x20 }
- { offsetInCU: 0x3A4F, offset: 0x9F250, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TR', symObjAddr: 0x1030, symBinAddr: 0x11ED0, symSize: 0x70 }
- { offsetInCU: 0x3A89, offset: 0x9F28A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTQ0_', symObjAddr: 0x10A0, symBinAddr: 0x11F40, symSize: 0x50 }
- { offsetInCU: 0x3B46, offset: 0x9F347, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TR', symObjAddr: 0x11C0, symBinAddr: 0x12060, symSize: 0x60 }
- { offsetInCU: 0x3F7D, offset: 0x9F77E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU0_TA', symObjAddr: 0x3420, symBinAddr: 0x142C0, symSize: 0x60 }
- { offsetInCU: 0x3FAD, offset: 0x9F7AE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA', symObjAddr: 0x34A0, symBinAddr: 0x14340, symSize: 0x90 }
- { offsetInCU: 0x3FDD, offset: 0x9F7DE, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameC9withRules10andPlayer10H7Player2AcA0G0_p_AA6PlayerCAItKcfcyAA4MoveVSg_AItYacfU_TA', symObjAddr: 0x3530, symBinAddr: 0x143D0, symSize: 0x60 }
- { offsetInCU: 0x400D, offset: 0x9F80E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4MoveVSgAA6PlayerCs5Error_pIegHngzo_AdFytsAG_pIegHnnrzo_TRTA.7', symObjAddr: 0x3590, symBinAddr: 0x14430, symSize: 0x90 }
- { offsetInCU: 0x4041, offset: 0x9F842, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVIegn_ACytIegnr_TRTA', symObjAddr: 0x3620, symBinAddr: 0x144C0, symSize: 0x20 }
- { offsetInCU: 0x4071, offset: 0x9F872, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6PlayerCs5Error_pIegHngzo_AcEytsAF_pIegHnnrzo_TRTA', symObjAddr: 0x3640, symBinAddr: 0x144E0, symSize: 0x90 }
- { offsetInCU: 0x40A1, offset: 0x9F8A2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTA', symObjAddr: 0x36D0, symBinAddr: 0x14570, symSize: 0x80 }
- { offsetInCU: 0x40D1, offset: 0x9F8D2, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel4GameCIegHg_ACytIegHnr_TRTATQ0_', symObjAddr: 0x3750, symBinAddr: 0x145F0, symSize: 0x50 }
- { offsetInCU: 0x4125, offset: 0x9F926, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA6ResultOAA6PlayerCSgIegnng_AceHytIegnnnr_TRTA', symObjAddr: 0x37A0, symBinAddr: 0x14640, symSize: 0x20 }
- { offsetInCU: 0x4159, offset: 0x9F95A, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCIegnng_AceGytIegnnnr_TRTA', symObjAddr: 0x37C0, symBinAddr: 0x14660, symSize: 0x20 }
- { offsetInCU: 0x418D, offset: 0x9F98E, size: 0x8, addend: 0x0, symName: '_$s14DouShouQiModel5BoardVAA4MoveVAA6PlayerCSbIegnngy_AceGSbytIegnnnnr_TRTA', symObjAddr: 0x37E0, symBinAddr: 0x14680, symSize: 0x20 }
- { offsetInCU: 0x41C1, offset: 0x9F9C2, size: 0x8, addend: 0x0, symName: '_$sS2i14DouShouQiModel5PieceVIegyyn_S2iACytIegnnnr_TRTA', symObjAddr: 0x3800, symBinAddr: 0x146A0, symSize: 0x20 }
- { offsetInCU: 0x41EA, offset: 0x9F9EB, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x3820, symBinAddr: 0x146C0, symSize: 0x30 }
- { offsetInCU: 0x41FE, offset: 0x9F9FF, size: 0x8, addend: 0x0, symName: ___swift_assign_boxed_opaque_existential_1, symObjAddr: 0x3BF0, symBinAddr: 0x14A90, symSize: 0x130 }
...

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 327 KiB

@ -7,8 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
643AB6932BFCEFD00018DA73 /* GameResumeFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 643AB6922BFCEFD00018DA73 /* GameResumeFrame.swift */; };
643AB69B2BFCFB5C0018DA73 /* HistoricView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 643AB69A2BFCFB5C0018DA73 /* HistoricView.swift */; };
6437FF132C25846F009D0EAF /* PlayingGameVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6437FF122C25846F009D0EAF /* PlayingGameVM.swift */; };
6458345C2BF5F92300E18321 /* DouShouQi_AppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6458345B2BF5F92300E18321 /* DouShouQi_AppApp.swift */; };
6458345E2BF5F92300E18321 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6458345D2BF5F92300E18321 /* ContentView.swift */; };
645834602BF5F92500E18321 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6458345F2BF5F92500E18321 /* Assets.xcassets */; };
@ -16,13 +15,15 @@
6458346D2BF5F92600E18321 /* DouShouQi_AppTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6458346C2BF5F92600E18321 /* DouShouQi_AppTests.swift */; };
645834772BF5F92600E18321 /* DouShouQi_AppUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645834762BF5F92600E18321 /* DouShouQi_AppUITests.swift */; };
645834792BF5F92600E18321 /* DouShouQi_AppUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645834782BF5F92600E18321 /* DouShouQi_AppUITestsLaunchTests.swift */; };
645834882BF5FEA000E18321 /* DSQ.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 645834872BF5FEA000E18321 /* DSQ.xcframework */; };
645834892BF5FEA000E18321 /* DSQ.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 645834872BF5FEA000E18321 /* DSQ.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
645B4C202BFCCA0500FD658A /* PlayerResumeFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645B4C1F2BFCCA0500FD658A /* PlayerResumeFrame.swift */; };
645B4C202BFCCA0500FD658A /* PlayerScoreResumeFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645B4C1F2BFCCA0500FD658A /* PlayerScoreResumeFrame.swift */; };
645B4C252BFCD3C600FD658A /* ScoreBoardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645B4C242BFCD3C600FD658A /* ScoreBoardView.swift */; };
646F04BE2C0F54C0003C8600 /* SettingsVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 646F04BD2C0F54C0003C8600 /* SettingsVM.swift */; };
646F04C12C0F5C11003C8600 /* Language.swift in Sources */ = {isa = PBXBuildFile; fileRef = 646F04C02C0F5C11003C8600 /* Language.swift */; };
646FA83E2C072340001466BA /* GameVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 646FA83D2C072340001466BA /* GameVM.swift */; };
646FA8432C0730D6001466BA /* HistoricVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 646FA8422C0730D6001466BA /* HistoricVM.swift */; };
647D565C2BFD0212008D02EA /* PlayerResumeFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647D565B2BFD0212008D02EA /* PlayerResumeFrame.swift */; };
6493C1C02C046BF900B5121D /* samurai.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6493C1BF2C046BF900B5121D /* samurai.ttf */; };
6493C1C22C046E5E00B5121D /* Fonts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6493C1C12C046E5E00B5121D /* Fonts.swift */; };
649ABF5B2BF60D78002E8894 /* MainMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649ABF5A2BF60D78002E8894 /* MainMenuView.swift */; };
649ABF602BF60F2D002E8894 /* MainMenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649ABF5F2BF60F2D002E8894 /* MainMenuButton.swift */; };
649B59A42BF64574002BAE38 /* TitlePageFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59A32BF64574002BAE38 /* TitlePageFrame.swift */; };
649B59A72BF64BA9002BAE38 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 649B59A62BF64BA9002BAE38 /* Colors.xcassets */; };
@ -30,14 +31,64 @@
649B59AE2BF64EAB002BAE38 /* AppImages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59AD2BF64EAB002BAE38 /* AppImages.swift */; };
649B59B22BF65392002BAE38 /* TextStyles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59B12BF65392002BAE38 /* TextStyles.swift */; };
649B59B42BF653E1002BAE38 /* ViewTitleTextStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649B59B32BF653E1002BAE38 /* ViewTitleTextStyle.swift */; };
EC62C4EF2BFE367F0048CD0B /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C4EE2BFE367F0048CD0B /* SwiftUIView.swift */; };
EC62C4F92C0371660048CD0B /* MusicPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C4F82C0371660048CD0B /* MusicPlayer.swift */; };
64D2D74E2C25D380009BD010 /* Animals.Symbols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D2D74D2C25D380009BD010 /* Animals.Symbols.swift */; };
64D992722C06281B002ACBC6 /* SystemIcons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D992712C06281B002ACBC6 /* SystemIcons.swift */; };
64FC4D692C09C78000D08B8B /* SelectPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64FC4D682C09C78000D08B8B /* SelectPlayerView.swift */; };
64FC4D6B2C09C7C900D08B8B /* SelectPlayerButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64FC4D6A2C09C7C900D08B8B /* SelectPlayerButtonView.swift */; };
EC0540C02C08A1040032E9EF /* HistoricView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0540BF2C08A1040032E9EF /* HistoricView.swift */; };
EC0540C42C08A13E0032E9EF /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0540C32C08A13E0032E9EF /* GameView.swift */; };
EC0540C62C08A1F40032E9EF /* TopGameBoard.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0540C52C08A1F40032E9EF /* TopGameBoard.swift */; };
EC0540CA2C08BD8D0032E9EF /* GameMusic.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EC0540C92C08BD8D0032E9EF /* GameMusic.mp3 */; };
EC05BFC42C04C3C4000F7B19 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC05BFC32C04C3C4000F7B19 /* SettingsView.swift */; };
EC05BFC82C04D832000F7B19 /* CustomSwitchButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC05BFC72C04D832000F7B19 /* CustomSwitchButton.swift */; };
EC05BFCB2C05F470000F7B19 /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC05BFCA2C05F470000F7B19 /* GameScene.swift */; };
EC2DD03F2C0CDF0C00FC55C0 /* MainMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2DD03E2C0CDF0C00FC55C0 /* MainMenuView.swift */; };
EC2DD0412C1C203000FC55C0 /* ShowAllPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2DD0402C1C203000FC55C0 /* ShowAllPlayer.swift */; };
EC3EE4B12C0CD46000710153 /* ButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3EE4B02C0CD46000710153 /* ButtonView.swift */; };
EC3EE4B32C0CD47000710153 /* MainButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3EE4B22C0CD47000710153 /* MainButton.swift */; };
EC62C4FB2C038BD20048CD0B /* PlayersView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C4FA2C038BD20048CD0B /* PlayersView.swift */; };
EC62C4FD2C0391D30048CD0B /* PlayerRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C4FC2C0391D30048CD0B /* PlayerRow.swift */; };
EC62C4FF2C0457AD0048CD0B /* TitleScreenMusic.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EC62C4FE2C0457AD0048CD0B /* TitleScreenMusic.mp3 */; };
EC62C5012C045B590048CD0B /* SoundPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C5002C045B590048CD0B /* SoundPlayer.swift */; };
EC62C5062C045C1A0048CD0B /* TitleScreenButtonSound.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EC62C5052C045C1A0048CD0B /* TitleScreenButtonSound.mp3 */; };
EC62C5092C0467240048CD0B /* SplashScreenView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C5082C0467240048CD0B /* SplashScreenView.swift */; };
EC62C50D2C046D9E0048CD0B /* SplashScreenSound.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EC62C50C2C046D9E0048CD0B /* SplashScreenSound.mp3 */; };
EC62C50F2C05D06A0048CD0B /* AddPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C50E2C05D06A0048CD0B /* AddPlayerView.swift */; };
EC62C5172C0620C00048CD0B /* rap.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EC62C5162C0620C00048CD0B /* rap.mp3 */; };
EC62C51B2C09D1790048CD0B /* PlayerStatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C51A2C09D1790048CD0B /* PlayerStatView.swift */; };
EC62C5252C0F68830048CD0B /* PlayerVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C5242C0F68830048CD0B /* PlayerVM.swift */; };
EC62C5292C1974000048CD0B /* PlayersVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C5282C1974000048CD0B /* PlayersVM.swift */; };
EC62C52D2C197ED10048CD0B /* Player.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C52C2C197ED10048CD0B /* Player.swift */; };
EC62C5382C1C64EE0048CD0B /* CoreManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C5372C1C64EE0048CD0B /* CoreManager.swift */; };
EC62C53D2C1C69200048CD0B /* DouShouQi_App.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = EC62C53B2C1C69200048CD0B /* DouShouQi_App.xcdatamodeld */; };
EC62C53F2C1C6D1A0048CD0B /* CDPlayerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC62C53E2C1C6D1A0048CD0B /* CDPlayerExtension.swift */; };
EC99D5C12C089F6B00731B62 /* GameResumeFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC99D5C02C089F6B00731B62 /* GameResumeFrame.swift */; };
ECB6364E2C04628E007CD5E2 /* SpriteMeeple.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB6364D2C04628E007CD5E2 /* SpriteMeeple.swift */; };
ECB636512C046379007CD5E2 /* MusicPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB636502C046379007CD5E2 /* MusicPlayer.swift */; };
ECB636532C0463A9007CD5E2 /* SoundPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB636522C0463A9007CD5E2 /* SoundPlayer.swift */; };
ECB636552C047992007CD5E2 /* Image.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ECB636542C047992007CD5E2 /* Image.xcassets */; };
ECCBA6B82C29BE1900D6D9FB /* ARKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECCBA6B72C29BE1900D6D9FB /* ARKit.framework */; };
ECCBA6BA2C29BE2800D6D9FB /* RealityKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECCBA6B92C29BE2800D6D9FB /* RealityKit.framework */; };
ECCBA6BD2C29BFF600D6D9FB /* ARBoard.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECCBA6BC2C29BFF600D6D9FB /* ARBoard.swift */; };
ECCBA6C32C29C25000D6D9FB /* ARKitUIViewRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECCBA6C22C29C25000D6D9FB /* ARKitUIViewRepresentable.swift */; };
ECCBA6C52C29C2F500D6D9FB /* ARKitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECCBA6C42C29C2F500D6D9FB /* ARKitView.swift */; };
ECE777142C2068F400D354B0 /* EditPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECE777132C2068F400D354B0 /* EditPlayerView.swift */; };
ECF3FD312C2722C600F5E62B /* CDHistoriqueExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF3FD302C2722C600F5E62B /* CDHistoriqueExtension.swift */; };
ECF3FD332C27238F00F5E62B /* Historique.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF3FD322C27238F00F5E62B /* Historique.swift */; };
ECF3FD3A2C29A20D00F5E62B /* HistoricListVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF3FD392C29A20D00F5E62B /* HistoricListVM.swift */; };
ECF3FD3D2C29B64100F5E62B /* ChronoVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF3FD3C2C29B64100F5E62B /* ChronoVM.swift */; };
ECF9AD352C29D46A00238A06 /* Start.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD322C29D46A00238A06 /* Start.mp3 */; };
ECF9AD362C29D46A00238A06 /* Fight.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD332C29D46A00238A06 /* Fight.mp3 */; };
ECF9AD372C29D46A00238A06 /* SelectFighterSound.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD342C29D46A00238A06 /* SelectFighterSound.mp3 */; };
ECF9AD562C2A02BC00238A06 /* cat.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD4D2C2A02BC00238A06 /* cat.usdz */; };
ECF9AD572C2A02BC00238A06 /* dog.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD4E2C2A02BC00238A06 /* dog.usdz */; };
ECF9AD582C2A02BC00238A06 /* tiger.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD4F2C2A02BC00238A06 /* tiger.usdz */; };
ECF9AD592C2A02BC00238A06 /* wolf.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD502C2A02BC00238A06 /* wolf.usdz */; };
ECF9AD5A2C2A02BC00238A06 /* board.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD512C2A02BC00238A06 /* board.usdz */; };
ECF9AD5B2C2A02BC00238A06 /* elephant.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD522C2A02BC00238A06 /* elephant.usdz */; };
ECF9AD5C2C2A02BC00238A06 /* leopard.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD532C2A02BC00238A06 /* leopard.usdz */; };
ECF9AD5D2C2A02BC00238A06 /* lion.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD542C2A02BC00238A06 /* lion.usdz */; };
ECF9AD5E2C2A02BC00238A06 /* rat.usdz in Resources */ = {isa = PBXBuildFile; fileRef = ECF9AD552C2A02BC00238A06 /* rat.usdz */; };
ECF9AD642C2EE9BC00238A06 /* DSQ.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECF9AD632C2EE9BC00238A06 /* DSQ.xcframework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -57,23 +108,8 @@
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
6458348A2BF5FEA000E18321 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
645834892BF5FEA000E18321 /* DSQ.xcframework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
643AB6922BFCEFD00018DA73 /* GameResumeFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameResumeFrame.swift; sourceTree = "<group>"; };
643AB69A2BFCFB5C0018DA73 /* HistoricView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoricView.swift; sourceTree = "<group>"; };
6437FF122C25846F009D0EAF /* PlayingGameVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayingGameVM.swift; sourceTree = "<group>"; };
645834582BF5F92300E18321 /* DouShouQi_App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DouShouQi_App.app; sourceTree = BUILT_PRODUCTS_DIR; };
6458345B2BF5F92300E18321 /* DouShouQi_AppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DouShouQi_AppApp.swift; sourceTree = "<group>"; };
6458345D2BF5F92300E18321 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
@ -85,12 +121,15 @@
645834762BF5F92600E18321 /* DouShouQi_AppUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DouShouQi_AppUITests.swift; sourceTree = "<group>"; };
645834782BF5F92600E18321 /* DouShouQi_AppUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DouShouQi_AppUITestsLaunchTests.swift; sourceTree = "<group>"; };
645834852BF5FE1400E18321 /* DouShouQi-App-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "DouShouQi-App-Info.plist"; sourceTree = SOURCE_ROOT; };
645834872BF5FEA000E18321 /* DSQ.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = DSQ.xcframework; sourceTree = "<group>"; };
645B4C1F2BFCCA0500FD658A /* PlayerResumeFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerResumeFrame.swift; sourceTree = "<group>"; };
645B4C1F2BFCCA0500FD658A /* PlayerScoreResumeFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerScoreResumeFrame.swift; sourceTree = "<group>"; };
645B4C242BFCD3C600FD658A /* ScoreBoardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScoreBoardView.swift; sourceTree = "<group>"; };
646F04BD2C0F54C0003C8600 /* SettingsVM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsVM.swift; sourceTree = "<group>"; };
646F04C02C0F5C11003C8600 /* Language.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Language.swift; sourceTree = "<group>"; };
646FA83D2C072340001466BA /* GameVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameVM.swift; sourceTree = "<group>"; };
646FA8422C0730D6001466BA /* HistoricVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoricVM.swift; sourceTree = "<group>"; };
647D565B2BFD0212008D02EA /* PlayerResumeFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerResumeFrame.swift; sourceTree = "<group>"; };
6493C1BF2C046BF900B5121D /* samurai.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = samurai.ttf; sourceTree = "<group>"; };
6493C1C12C046E5E00B5121D /* Fonts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fonts.swift; sourceTree = "<group>"; };
649ABF5A2BF60D78002E8894 /* MainMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuView.swift; sourceTree = "<group>"; };
649ABF5F2BF60F2D002E8894 /* MainMenuButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuButton.swift; sourceTree = "<group>"; };
649B59A32BF64574002BAE38 /* TitlePageFrame.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitlePageFrame.swift; sourceTree = "<group>"; };
649B59A62BF64BA9002BAE38 /* Colors.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Colors.xcassets; sourceTree = "<group>"; };
@ -98,14 +137,64 @@
649B59AD2BF64EAB002BAE38 /* AppImages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppImages.swift; sourceTree = "<group>"; };
649B59B12BF65392002BAE38 /* TextStyles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextStyles.swift; sourceTree = "<group>"; };
649B59B32BF653E1002BAE38 /* ViewTitleTextStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewTitleTextStyle.swift; sourceTree = "<group>"; };
EC62C4EE2BFE367F0048CD0B /* SwiftUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIView.swift; sourceTree = "<group>"; };
EC62C4F82C0371660048CD0B /* MusicPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicPlayer.swift; sourceTree = "<group>"; };
64D2D74D2C25D380009BD010 /* Animals.Symbols.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Animals.Symbols.swift; sourceTree = "<group>"; };
64D992712C06281B002ACBC6 /* SystemIcons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemIcons.swift; sourceTree = "<group>"; };
64FC4D682C09C78000D08B8B /* SelectPlayerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectPlayerView.swift; sourceTree = "<group>"; };
64FC4D6A2C09C7C900D08B8B /* SelectPlayerButtonView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelectPlayerButtonView.swift; sourceTree = "<group>"; };
EC0540BF2C08A1040032E9EF /* HistoricView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoricView.swift; sourceTree = "<group>"; };
EC0540C32C08A13E0032E9EF /* GameView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameView.swift; sourceTree = "<group>"; };
EC0540C52C08A1F40032E9EF /* TopGameBoard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TopGameBoard.swift; sourceTree = "<group>"; };
EC0540C92C08BD8D0032E9EF /* GameMusic.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = GameMusic.mp3; sourceTree = "<group>"; };
EC05BFC32C04C3C4000F7B19 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
EC05BFC72C04D832000F7B19 /* CustomSwitchButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSwitchButton.swift; sourceTree = "<group>"; };
EC05BFCA2C05F470000F7B19 /* GameScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = "<group>"; };
EC2DD03E2C0CDF0C00FC55C0 /* MainMenuView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainMenuView.swift; sourceTree = "<group>"; };
EC2DD0402C1C203000FC55C0 /* ShowAllPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowAllPlayer.swift; sourceTree = "<group>"; };
EC3EE4B02C0CD46000710153 /* ButtonView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonView.swift; sourceTree = "<group>"; };
EC3EE4B22C0CD47000710153 /* MainButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainButton.swift; sourceTree = "<group>"; };
EC62C4FA2C038BD20048CD0B /* PlayersView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayersView.swift; sourceTree = "<group>"; };
EC62C4FC2C0391D30048CD0B /* PlayerRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRow.swift; sourceTree = "<group>"; };
EC62C4FE2C0457AD0048CD0B /* TitleScreenMusic.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = TitleScreenMusic.mp3; sourceTree = "<group>"; };
EC62C5002C045B590048CD0B /* SoundPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundPlayer.swift; sourceTree = "<group>"; };
EC62C5052C045C1A0048CD0B /* TitleScreenButtonSound.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = TitleScreenButtonSound.mp3; sourceTree = "<group>"; };
EC62C5082C0467240048CD0B /* SplashScreenView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashScreenView.swift; sourceTree = "<group>"; };
EC62C50C2C046D9E0048CD0B /* SplashScreenSound.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = SplashScreenSound.mp3; sourceTree = "<group>"; };
EC62C50E2C05D06A0048CD0B /* AddPlayerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddPlayerView.swift; sourceTree = "<group>"; };
EC62C5162C0620C00048CD0B /* rap.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = rap.mp3; sourceTree = "<group>"; };
EC62C51A2C09D1790048CD0B /* PlayerStatView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerStatView.swift; sourceTree = "<group>"; };
EC62C5242C0F68830048CD0B /* PlayerVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerVM.swift; sourceTree = "<group>"; };
EC62C5282C1974000048CD0B /* PlayersVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayersVM.swift; sourceTree = "<group>"; };
EC62C52C2C197ED10048CD0B /* Player.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Player.swift; sourceTree = "<group>"; };
EC62C5372C1C64EE0048CD0B /* CoreManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreManager.swift; sourceTree = "<group>"; };
EC62C53C2C1C69200048CD0B /* DouShouQi_App.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = DouShouQi_App.xcdatamodel; sourceTree = "<group>"; };
EC62C53E2C1C6D1A0048CD0B /* CDPlayerExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CDPlayerExtension.swift; sourceTree = "<group>"; };
EC99D5C02C089F6B00731B62 /* GameResumeFrame.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameResumeFrame.swift; sourceTree = "<group>"; };
ECB6364D2C04628E007CD5E2 /* SpriteMeeple.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpriteMeeple.swift; sourceTree = "<group>"; };
ECB636502C046379007CD5E2 /* MusicPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicPlayer.swift; sourceTree = "<group>"; };
ECB636522C0463A9007CD5E2 /* SoundPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundPlayer.swift; sourceTree = "<group>"; };
ECB636542C047992007CD5E2 /* Image.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Image.xcassets; sourceTree = "<group>"; };
ECCBA6B72C29BE1900D6D9FB /* ARKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ARKit.framework; path = System/Library/Frameworks/ARKit.framework; sourceTree = SDKROOT; };
ECCBA6B92C29BE2800D6D9FB /* RealityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RealityKit.framework; path = System/Library/Frameworks/RealityKit.framework; sourceTree = SDKROOT; };
ECCBA6BC2C29BFF600D6D9FB /* ARBoard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARBoard.swift; sourceTree = "<group>"; };
ECCBA6C22C29C25000D6D9FB /* ARKitUIViewRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARKitUIViewRepresentable.swift; sourceTree = "<group>"; };
ECCBA6C42C29C2F500D6D9FB /* ARKitView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARKitView.swift; sourceTree = "<group>"; };
ECE777132C2068F400D354B0 /* EditPlayerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditPlayerView.swift; sourceTree = "<group>"; };
ECF3FD302C2722C600F5E62B /* CDHistoriqueExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CDHistoriqueExtension.swift; sourceTree = "<group>"; };
ECF3FD322C27238F00F5E62B /* Historique.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Historique.swift; sourceTree = "<group>"; };
ECF3FD392C29A20D00F5E62B /* HistoricListVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoricListVM.swift; sourceTree = "<group>"; };
ECF3FD3C2C29B64100F5E62B /* ChronoVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChronoVM.swift; sourceTree = "<group>"; };
ECF9AD322C29D46A00238A06 /* Start.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Start.mp3; sourceTree = "<group>"; };
ECF9AD332C29D46A00238A06 /* Fight.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Fight.mp3; sourceTree = "<group>"; };
ECF9AD342C29D46A00238A06 /* SelectFighterSound.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = SelectFighterSound.mp3; sourceTree = "<group>"; };
ECF9AD4D2C2A02BC00238A06 /* cat.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = cat.usdz; sourceTree = "<group>"; };
ECF9AD4E2C2A02BC00238A06 /* dog.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = dog.usdz; sourceTree = "<group>"; };
ECF9AD4F2C2A02BC00238A06 /* tiger.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = tiger.usdz; sourceTree = "<group>"; };
ECF9AD502C2A02BC00238A06 /* wolf.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = wolf.usdz; sourceTree = "<group>"; };
ECF9AD512C2A02BC00238A06 /* board.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = board.usdz; sourceTree = "<group>"; };
ECF9AD522C2A02BC00238A06 /* elephant.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = elephant.usdz; sourceTree = "<group>"; };
ECF9AD532C2A02BC00238A06 /* leopard.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = leopard.usdz; sourceTree = "<group>"; };
ECF9AD542C2A02BC00238A06 /* lion.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = lion.usdz; sourceTree = "<group>"; };
ECF9AD552C2A02BC00238A06 /* rat.usdz */ = {isa = PBXFileReference; lastKnownFileType = file.usdz; path = rat.usdz; sourceTree = "<group>"; };
ECF9AD632C2EE9BC00238A06 /* DSQ.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = DSQ.xcframework; path = ../Dependencies/DSQ.xcframework; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -113,21 +202,9 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
645834882BF5FEA000E18321 /* DSQ.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
645834652BF5F92600E18321 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
6458346F2BF5F92600E18321 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
ECCBA6BA2C29BE2800D6D9FB /* RealityKit.framework in Frameworks */,
ECCBA6B82C29BE1900D6D9FB /* ARKit.framework in Frameworks */,
ECF9AD642C2EE9BC00238A06 /* DSQ.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -137,7 +214,8 @@
643AB6912BFCEFB70018DA73 /* Game */ = {
isa = PBXGroup;
children = (
643AB6922BFCEFD00018DA73 /* GameResumeFrame.swift */,
EC0540C52C08A1F40032E9EF /* TopGameBoard.swift */,
EC99D5C02C089F6B00731B62 /* GameResumeFrame.swift */,
);
path = Game;
sourceTree = "<group>";
@ -145,8 +223,8 @@
643AB6992BFCFB480018DA73 /* Game */ = {
isa = PBXGroup;
children = (
643AB69A2BFCFB5C0018DA73 /* HistoricView.swift */,
EC62C4EE2BFE367F0048CD0B /* SwiftUIView.swift */,
EC0540C32C08A13E0032E9EF /* GameView.swift */,
EC0540BF2C08A1040032E9EF /* HistoricView.swift */,
);
path = Game;
sourceTree = "<group>";
@ -157,8 +235,7 @@
6458345A2BF5F92300E18321 /* DouShouQi_App */,
6458346B2BF5F92600E18321 /* DouShouQi_AppTests */,
645834752BF5F92600E18321 /* DouShouQi_AppUITests */,
645834592BF5F92300E18321 /* Products */,
645834862BF5FE9F00E18321 /* Frameworks */,
64C87E222C09D52600CCD451 /* Frameworks */,
);
sourceTree = "<group>";
};
@ -175,7 +252,10 @@
6458345A2BF5F92300E18321 /* DouShouQi_App */ = {
isa = PBXGroup;
children = (
EC62C5022C045BB90048CD0B /* SoundPlayerClass */,
ECCBA6BB2C29BE3C00D6D9FB /* ARViews */,
646F04BF2C0F5BD1003C8600 /* AppModelAndExtension */,
646FA83C2C072284001466BA /* ViewModel */,
ECB6364F2C04635D007CD5E2 /* SoundPlayerClass */,
649B59A52BF64B1B002BAE38 /* Assets */,
649ABF5E2BF60ED5002E8894 /* Components */,
649ABF592BF60D13002E8894 /* Views */,
@ -183,6 +263,7 @@
6458345B2BF5F92300E18321 /* DouShouQi_AppApp.swift */,
6458345D2BF5F92300E18321 /* ContentView.swift */,
6458345F2BF5F92500E18321 /* Assets.xcassets */,
EC62C53B2C1C69200048CD0B /* DouShouQi_App.xcdatamodeld */,
645834612BF5F92500E18321 /* Preview Content */,
);
path = DouShouQi_App;
@ -213,19 +294,16 @@
path = DouShouQi_AppUITests;
sourceTree = "<group>";
};
645834862BF5FE9F00E18321 /* Frameworks */ = {
isa = PBXGroup;
children = (
645834872BF5FEA000E18321 /* DSQ.xcframework */,
);
name = Frameworks;
sourceTree = "<group>";
};
645B4C1C2BFCC95000FD658A /* Player */ = {
isa = PBXGroup;
children = (
645B4C1F2BFCCA0500FD658A /* PlayerResumeFrame.swift */,
64FC4D6A2C09C7C900D08B8B /* SelectPlayerButtonView.swift */,
645B4C1F2BFCCA0500FD658A /* PlayerScoreResumeFrame.swift */,
647D565B2BFD0212008D02EA /* PlayerResumeFrame.swift */,
EC62C4FC2C0391D30048CD0B /* PlayerRow.swift */,
EC62C50E2C05D06A0048CD0B /* AddPlayerView.swift */,
EC2DD0402C1C203000FC55C0 /* ShowAllPlayer.swift */,
EC62C51A2C09D1790048CD0B /* PlayerStatView.swift */,
);
path = Player;
sourceTree = "<group>";
@ -233,16 +311,59 @@
645B4C232BFCD39A00FD658A /* Player */ = {
isa = PBXGroup;
children = (
64FC4D682C09C78000D08B8B /* SelectPlayerView.swift */,
645B4C242BFCD3C600FD658A /* ScoreBoardView.swift */,
EC62C4FA2C038BD20048CD0B /* PlayersView.swift */,
ECE777132C2068F400D354B0 /* EditPlayerView.swift */,
);
path = Player;
sourceTree = "<group>";
};
646F04BC2C0F5491003C8600 /* Settings */ = {
isa = PBXGroup;
children = (
646F04BD2C0F54C0003C8600 /* SettingsVM.swift */,
);
path = Settings;
sourceTree = "<group>";
};
646F04BF2C0F5BD1003C8600 /* AppModelAndExtension */ = {
isa = PBXGroup;
children = (
EC62C52B2C197EA80048CD0B /* Class */,
EC62C5232C0F68730048CD0B /* Extensions */,
646F04C02C0F5C11003C8600 /* Language.swift */,
);
path = AppModelAndExtension;
sourceTree = "<group>";
};
646FA83C2C072284001466BA /* ViewModel */ = {
isa = PBXGroup;
children = (
EC62C5262C11E24B0048CD0B /* Players */,
646F04BC2C0F5491003C8600 /* Settings */,
646FA83F2C0730B4001466BA /* Game */,
ECF3FD3C2C29B64100F5E62B /* ChronoVM.swift */,
);
path = ViewModel;
sourceTree = "<group>";
};
646FA83F2C0730B4001466BA /* Game */ = {
isa = PBXGroup;
children = (
ECF3FD3B2C29A21200F5E62B /* Historic */,
646FA83D2C072340001466BA /* GameVM.swift */,
6437FF122C25846F009D0EAF /* PlayingGameVM.swift */,
);
path = Game;
sourceTree = "<group>";
};
6493C1BE2C04650200B5121D /* Menu */ = {
isa = PBXGroup;
children = (
649ABF5A2BF60D78002E8894 /* MainMenuView.swift */,
EC2DD03E2C0CDF0C00FC55C0 /* MainMenuView.swift */,
EC62C5082C0467240048CD0B /* SplashScreenView.swift */,
EC05BFC32C04C3C4000F7B19 /* SettingsView.swift */,
);
path = Menu;
sourceTree = "<group>";
@ -260,6 +381,10 @@
649ABF5E2BF60ED5002E8894 /* Components */ = {
isa = PBXGroup;
children = (
EC3EE4B22C0CD47000710153 /* MainButton.swift */,
EC3EE4B02C0CD46000710153 /* ButtonView.swift */,
EC05BFC92C05ECC6000F7B19 /* Scene */,
EC05BFC62C04D7C2000F7B19 /* Settings */,
643AB6912BFCEFB70018DA73 /* Game */,
645B4C1C2BFCC95000FD658A /* Player */,
649ABF5F2BF60F2D002E8894 /* MainMenuButton.swift */,
@ -271,6 +396,7 @@
649B59A52BF64B1B002BAE38 /* Assets */ = {
isa = PBXGroup;
children = (
ECF9AD3A2C2A025500238A06 /* AssetARkit */,
EC62C5042C045BE00048CD0B /* Musics */,
EC62C5032C045BD30048CD0B /* Sounds */,
649B59B02BF65360002BAE38 /* TextStyles */,
@ -284,6 +410,7 @@
isa = PBXGroup;
children = (
649B59AD2BF64EAB002BAE38 /* AppImages.swift */,
64D992712C06281B002ACBC6 /* SystemIcons.swift */,
ECB636542C047992007CD5E2 /* Image.xcassets */,
);
path = Images;
@ -309,18 +436,40 @@
path = TextStyles;
sourceTree = "<group>";
};
EC62C5022C045BB90048CD0B /* SoundPlayerClass */ = {
64C87E222C09D52600CCD451 /* Frameworks */ = {
isa = PBXGroup;
children = (
EC62C5002C045B590048CD0B /* SoundPlayer.swift */,
EC62C4F82C0371660048CD0B /* MusicPlayer.swift */,
ECF9AD632C2EE9BC00238A06 /* DSQ.xcframework */,
ECCBA6B92C29BE2800D6D9FB /* RealityKit.framework */,
ECCBA6B72C29BE1900D6D9FB /* ARKit.framework */,
);
path = SoundPlayerClass;
name = Frameworks;
sourceTree = "<group>";
};
EC05BFC62C04D7C2000F7B19 /* Settings */ = {
isa = PBXGroup;
children = (
EC05BFC72C04D832000F7B19 /* CustomSwitchButton.swift */,
);
path = Settings;
sourceTree = "<group>";
};
EC05BFC92C05ECC6000F7B19 /* Scene */ = {
isa = PBXGroup;
children = (
ECB6364D2C04628E007CD5E2 /* SpriteMeeple.swift */,
EC05BFCA2C05F470000F7B19 /* GameScene.swift */,
);
path = Scene;
sourceTree = "<group>";
};
EC62C5032C045BD30048CD0B /* Sounds */ = {
isa = PBXGroup;
children = (
ECF9AD332C29D46A00238A06 /* Fight.mp3 */,
ECF9AD342C29D46A00238A06 /* SelectFighterSound.mp3 */,
ECF9AD322C29D46A00238A06 /* Start.mp3 */,
EC62C50C2C046D9E0048CD0B /* SplashScreenSound.mp3 */,
EC62C5052C045C1A0048CD0B /* TitleScreenButtonSound.mp3 */,
);
path = Sounds;
@ -329,11 +478,95 @@
EC62C5042C045BE00048CD0B /* Musics */ = {
isa = PBXGroup;
children = (
EC0540C92C08BD8D0032E9EF /* GameMusic.mp3 */,
EC62C5162C0620C00048CD0B /* rap.mp3 */,
EC62C4FE2C0457AD0048CD0B /* TitleScreenMusic.mp3 */,
);
path = Musics;
sourceTree = "<group>";
};
EC62C5232C0F68730048CD0B /* Extensions */ = {
isa = PBXGroup;
children = (
EC62C53E2C1C6D1A0048CD0B /* CDPlayerExtension.swift */,
ECF3FD302C2722C600F5E62B /* CDHistoriqueExtension.swift */,
64D2D74D2C25D380009BD010 /* Animals.Symbols.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
EC62C5262C11E24B0048CD0B /* Players */ = {
isa = PBXGroup;
children = (
EC62C5242C0F68830048CD0B /* PlayerVM.swift */,
EC62C5282C1974000048CD0B /* PlayersVM.swift */,
);
path = Players;
sourceTree = "<group>";
tabWidth = 4;
};
EC62C52B2C197EA80048CD0B /* Class */ = {
isa = PBXGroup;
children = (
ECE7770E2C1C6FB200D354B0 /* CoreData */,
EC62C52C2C197ED10048CD0B /* Player.swift */,
ECF3FD322C27238F00F5E62B /* Historique.swift */,
);
path = Class;
sourceTree = "<group>";
};
ECB6364F2C04635D007CD5E2 /* SoundPlayerClass */ = {
isa = PBXGroup;
children = (
ECB636502C046379007CD5E2 /* MusicPlayer.swift */,
ECB636522C0463A9007CD5E2 /* SoundPlayer.swift */,
);
path = SoundPlayerClass;
sourceTree = "<group>";
};
ECCBA6BB2C29BE3C00D6D9FB /* ARViews */ = {
isa = PBXGroup;
children = (
ECCBA6BC2C29BFF600D6D9FB /* ARBoard.swift */,
ECCBA6C22C29C25000D6D9FB /* ARKitUIViewRepresentable.swift */,
ECCBA6C42C29C2F500D6D9FB /* ARKitView.swift */,
);
path = ARViews;
sourceTree = "<group>";
};
ECE7770E2C1C6FB200D354B0 /* CoreData */ = {
isa = PBXGroup;
children = (
EC62C5372C1C64EE0048CD0B /* CoreManager.swift */,
);
path = CoreData;
sourceTree = "<group>";
};
ECF3FD3B2C29A21200F5E62B /* Historic */ = {
isa = PBXGroup;
children = (
646FA8422C0730D6001466BA /* HistoricVM.swift */,
ECF3FD392C29A20D00F5E62B /* HistoricListVM.swift */,
);
path = Historic;
sourceTree = "<group>";
};
ECF9AD3A2C2A025500238A06 /* AssetARkit */ = {
isa = PBXGroup;
children = (
ECF9AD512C2A02BC00238A06 /* board.usdz */,
ECF9AD4D2C2A02BC00238A06 /* cat.usdz */,
ECF9AD4E2C2A02BC00238A06 /* dog.usdz */,
ECF9AD522C2A02BC00238A06 /* elephant.usdz */,
ECF9AD532C2A02BC00238A06 /* leopard.usdz */,
ECF9AD542C2A02BC00238A06 /* lion.usdz */,
ECF9AD552C2A02BC00238A06 /* rat.usdz */,
ECF9AD4F2C2A02BC00238A06 /* tiger.usdz */,
ECF9AD502C2A02BC00238A06 /* wolf.usdz */,
);
path = AssetARkit;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -344,7 +577,6 @@
645834542BF5F92300E18321 /* Sources */,
645834552BF5F92300E18321 /* Frameworks */,
645834562BF5F92300E18321 /* Resources */,
6458348A2BF5FEA000E18321 /* Embed Frameworks */,
);
buildRules = (
);
@ -360,7 +592,6 @@
buildConfigurationList = 6458347F2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppTests" */;
buildPhases = (
645834642BF5F92600E18321 /* Sources */,
645834652BF5F92600E18321 /* Frameworks */,
645834662BF5F92600E18321 /* Resources */,
);
buildRules = (
@ -378,7 +609,6 @@
buildConfigurationList = 645834822BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppUITests" */;
buildPhases = (
6458346E2BF5F92600E18321 /* Sources */,
6458346F2BF5F92600E18321 /* Frameworks */,
645834702BF5F92600E18321 /* Resources */,
);
buildRules = (
@ -439,13 +669,28 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
EC0540CA2C08BD8D0032E9EF /* GameMusic.mp3 in Resources */,
649B59A72BF64BA9002BAE38 /* Colors.xcassets in Resources */,
ECF9AD592C2A02BC00238A06 /* wolf.usdz in Resources */,
6493C1C02C046BF900B5121D /* samurai.ttf in Resources */,
EC62C5062C045C1A0048CD0B /* TitleScreenButtonSound.mp3 in Resources */,
ECF9AD352C29D46A00238A06 /* Start.mp3 in Resources */,
ECF9AD5A2C2A02BC00238A06 /* board.usdz in Resources */,
ECF9AD372C29D46A00238A06 /* SelectFighterSound.mp3 in Resources */,
EC62C5172C0620C00048CD0B /* rap.mp3 in Resources */,
EC62C50D2C046D9E0048CD0B /* SplashScreenSound.mp3 in Resources */,
ECF9AD362C29D46A00238A06 /* Fight.mp3 in Resources */,
ECF9AD582C2A02BC00238A06 /* tiger.usdz in Resources */,
645834632BF5F92500E18321 /* Preview Assets.xcassets in Resources */,
ECF9AD5B2C2A02BC00238A06 /* elephant.usdz in Resources */,
ECF9AD562C2A02BC00238A06 /* cat.usdz in Resources */,
ECF9AD5C2C2A02BC00238A06 /* leopard.usdz in Resources */,
645834602BF5F92500E18321 /* Assets.xcassets in Resources */,
ECB636552C047992007CD5E2 /* Image.xcassets in Resources */,
EC62C4FF2C0457AD0048CD0B /* TitleScreenMusic.mp3 in Resources */,
ECF9AD572C2A02BC00238A06 /* dog.usdz in Resources */,
ECF9AD5D2C2A02BC00238A06 /* lion.usdz in Resources */,
ECF9AD5E2C2A02BC00238A06 /* rat.usdz in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -470,25 +715,63 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
643AB69B2BFCFB5C0018DA73 /* HistoricView.swift in Sources */,
6458345E2BF5F92300E18321 /* ContentView.swift in Sources */,
646FA83E2C072340001466BA /* GameVM.swift in Sources */,
649B59A92BF64C6A002BAE38 /* Colors.swift in Sources */,
646FA8432C0730D6001466BA /* HistoricVM.swift in Sources */,
EC3EE4B12C0CD46000710153 /* ButtonView.swift in Sources */,
ECCBA6C52C29C2F500D6D9FB /* ARKitView.swift in Sources */,
649B59B42BF653E1002BAE38 /* ViewTitleTextStyle.swift in Sources */,
EC62C5012C045B590048CD0B /* SoundPlayer.swift in Sources */,
645B4C252BFCD3C600FD658A /* ScoreBoardView.swift in Sources */,
649B59AE2BF64EAB002BAE38 /* AppImages.swift in Sources */,
ECB636532C0463A9007CD5E2 /* SoundPlayer.swift in Sources */,
EC0540C02C08A1040032E9EF /* HistoricView.swift in Sources */,
EC0540C62C08A1F40032E9EF /* TopGameBoard.swift in Sources */,
649B59B22BF65392002BAE38 /* TextStyles.swift in Sources */,
EC99D5C12C089F6B00731B62 /* GameResumeFrame.swift in Sources */,
EC05BFCB2C05F470000F7B19 /* GameScene.swift in Sources */,
64D2D74E2C25D380009BD010 /* Animals.Symbols.swift in Sources */,
6458345C2BF5F92300E18321 /* DouShouQi_AppApp.swift in Sources */,
ECCBA6BD2C29BFF600D6D9FB /* ARBoard.swift in Sources */,
ECB636512C046379007CD5E2 /* MusicPlayer.swift in Sources */,
ECB6364E2C04628E007CD5E2 /* SpriteMeeple.swift in Sources */,
649B59A42BF64574002BAE38 /* TitlePageFrame.swift in Sources */,
EC0540C42C08A13E0032E9EF /* GameView.swift in Sources */,
EC05BFC42C04C3C4000F7B19 /* SettingsView.swift in Sources */,
ECF3FD312C2722C600F5E62B /* CDHistoriqueExtension.swift in Sources */,
ECF3FD3D2C29B64100F5E62B /* ChronoVM.swift in Sources */,
EC62C53D2C1C69200048CD0B /* DouShouQi_App.xcdatamodeld in Sources */,
EC62C50F2C05D06A0048CD0B /* AddPlayerView.swift in Sources */,
EC62C53F2C1C6D1A0048CD0B /* CDPlayerExtension.swift in Sources */,
64FC4D6B2C09C7C900D08B8B /* SelectPlayerButtonView.swift in Sources */,
646F04C12C0F5C11003C8600 /* Language.swift in Sources */,
EC05BFC82C04D832000F7B19 /* CustomSwitchButton.swift in Sources */,
64D992722C06281B002ACBC6 /* SystemIcons.swift in Sources */,
645B4C252BFCD3C600FD658A /* ScoreBoardView.swift in Sources */,
649ABF602BF60F2D002E8894 /* MainMenuButton.swift in Sources */,
643AB6932BFCEFD00018DA73 /* GameResumeFrame.swift in Sources */,
EC62C4EF2BFE367F0048CD0B /* SwiftUIView.swift in Sources */,
ECE777142C2068F400D354B0 /* EditPlayerView.swift in Sources */,
EC62C5382C1C64EE0048CD0B /* CoreManager.swift in Sources */,
EC62C5252C0F68830048CD0B /* PlayerVM.swift in Sources */,
ECF3FD332C27238F00F5E62B /* Historique.swift in Sources */,
EC62C51B2C09D1790048CD0B /* PlayerStatView.swift in Sources */,
649B59B22BF65392002BAE38 /* TextStyles.swift in Sources */,
EC62C4F92C0371660048CD0B /* MusicPlayer.swift in Sources */,
EC62C5092C0467240048CD0B /* SplashScreenView.swift in Sources */,
EC2DD03F2C0CDF0C00FC55C0 /* MainMenuView.swift in Sources */,
64FC4D692C09C78000D08B8B /* SelectPlayerView.swift in Sources */,
EC2DD0412C1C203000FC55C0 /* ShowAllPlayer.swift in Sources */,
EC62C4FD2C0391D30048CD0B /* PlayerRow.swift in Sources */,
EC62C4FB2C038BD20048CD0B /* PlayersView.swift in Sources */,
6458345C2BF5F92300E18321 /* DouShouQi_AppApp.swift in Sources */,
645B4C202BFCCA0500FD658A /* PlayerResumeFrame.swift in Sources */,
649ABF5B2BF60D78002E8894 /* MainMenuView.swift in Sources */,
645B4C202BFCCA0500FD658A /* PlayerScoreResumeFrame.swift in Sources */,
EC3EE4B32C0CD47000710153 /* MainButton.swift in Sources */,
647D565C2BFD0212008D02EA /* PlayerResumeFrame.swift in Sources */,
6493C1C22C046E5E00B5121D /* Fonts.swift in Sources */,
649B59A42BF64574002BAE38 /* TitlePageFrame.swift in Sources */,
646F04BE2C0F54C0003C8600 /* SettingsVM.swift in Sources */,
EC62C52D2C197ED10048CD0B /* Player.swift in Sources */,
EC62C5292C1974000048CD0B /* PlayersVM.swift in Sources */,
6437FF132C25846F009D0EAF /* PlayingGameVM.swift in Sources */,
ECF3FD3A2C29A20D00F5E62B /* HistoricListVM.swift in Sources */,
ECCBA6C32C29C25000D6D9FB /* ARKitUIViewRepresentable.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -644,12 +927,16 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"DouShouQi_App/Preview Content\"";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 67U885533Q;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "DouShouQi-App-Info.plist";
INFOPLIST_KEY_NSCameraUsageDescription = "";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@ -660,8 +947,10 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-App";
PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.DouShouQI;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = tpiOS_2024_06_21_off;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@ -673,12 +962,16 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"DouShouQi_App/Preview Content\"";
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 67U885533Q;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "DouShouQi-App-Info.plist";
INFOPLIST_KEY_NSCameraUsageDescription = "";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@ -689,8 +982,10 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = "fr.uca.iut.DouShouQi-App";
PRODUCT_BUNDLE_IDENTIFIER = fr.uca.iut.DouShouQI;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = tpiOS_2024_06_21_off;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@ -779,7 +1074,7 @@
6458347B2BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
defaultConfigurationName = Debug;
};
6458347C2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_App" */ = {
isa = XCConfigurationList;
@ -788,7 +1083,7 @@
6458347E2BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
defaultConfigurationName = Debug;
};
6458347F2BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppTests" */ = {
isa = XCConfigurationList;
@ -797,7 +1092,7 @@
645834812BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
defaultConfigurationName = Debug;
};
645834822BF5F92600E18321 /* Build configuration list for PBXNativeTarget "DouShouQi_AppUITests" */ = {
isa = XCConfigurationList;
@ -806,9 +1101,22 @@
645834842BF5F92600E18321 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
defaultConfigurationName = Debug;
};
/* End XCConfigurationList section */
/* Begin XCVersionGroup section */
EC62C53B2C1C69200048CD0B /* DouShouQi_App.xcdatamodeld */ = {
isa = XCVersionGroup;
children = (
EC62C53C2C1C69200048CD0B /* DouShouQi_App.xcdatamodel */,
);
currentVersion = EC62C53C2C1C69200048CD0B /* DouShouQi_App.xcdatamodel */;
path = DouShouQi_App.xcdatamodeld;
sourceTree = "<group>";
versionGroupType = wrapper.xcdatamodel;
};
/* End XCVersionGroup section */
};
rootObject = 645834502BF5F92300E18321 /* Project object */;
}

@ -0,0 +1,22 @@
//
// ARBoard.swift
// DouShouQi_App
//
// Created by Nathan Verdier on 24/06/2024.
//
import RealityKit
class ARBoard: Entity {
required init(image: String) {
super.init()
if let boardEntity = try? Entity.loadModel(named: image) {
self.addChild(boardEntity)
}
}
@MainActor required init() {
fatalError("init() has not been implemented")
}
}

@ -0,0 +1,23 @@
//
// ARKitUIViewBoard.swift
// DouShouQi_App
//
// Created by etudiant on 24/06/2024.
//
import SwiftUI
import DouShouQiModel
import ARKit
import RealityKit
struct ARKitUIViewRepresentable: UIViewRepresentable {
var aRKitView: ARKitView
func makeUIView(context: Context) -> ARKitView {
return aRKitView
}
func updateUIView(_ uiView: ARKitView, context: Context) {}
}

@ -0,0 +1,44 @@
//
// ARKitViewRepresentable.swift
// DouShouQi_App
//
// Created by etudiant on 24/06/2024.
//
import SwiftUI
import ARKit
import RealityKit
import DouShouQiModel
class ARKitView: ARView {
@ObservedObject var playingGameVM: PlayingGameVM
required init(frame frameRect: CGRect) {
self.playingGameVM = PlayingGameVM(withRules: ClassicRules(), andPlayer1: HumanPlayer(withName: "Player 1", andId: .player1)!, andPlayer2: HumanPlayer(withName: "Player 2", andId: .player2)!)!
super.init(frame: frameRect)
}
@MainActor required init?(coder decoder: NSCoder) {
fatalError("init(coder:) not implemented")
}
convenience init(playingGameVM: PlayingGameVM, imageBoard: String = "board", cell_size: Float = 0.1145) {
self.init(frame: UIScreen.main.bounds)
self.playingGameVM = playingGameVM
initBoard(withBoard: playingGameVM.game.board, andImage: imageBoard)
}
func applyConfiguration() {
let conf = ARWorldTrackingConfiguration()
self.session.run(conf)
}
func initBoard(withBoard board: Board, andImage image: String) {
let anchor = AnchorEntity(.plane(.horizontal, classification: .any, minimumBounds: SIMD2<Float>(1, 1)))
let arBoard = ARBoard(image: image)
anchor.addChild(arBoard)
self.scene.addAnchor(anchor)
arBoard.setPosition(SIMD3(x: 0, y: 0, z: 0), relativeTo: anchor)
}
}

@ -0,0 +1,154 @@
//
// CoreManger.swift
// DouShouQi_App
//
// Created by étudiant on 14/06/2024.
//
import Foundation
import CoreData
import DouShouQiModel
import Combine
class CoreDataManager {
static let shared = CoreDataManager()
private init() {}
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "DouShouQi_App")
container.loadPersistentStores { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
}
return container
}()
var context: NSManagedObjectContext {
return persistentContainer.viewContext
}
func saveContext() {
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
func savePlayer(playerVM: PlayerVM) {
let player = CDPlayer(context: context)
player.name = playerVM.player.name
player.photo = playerVM.player.photo
saveContext()
}
func fetchPlayers() -> [CDPlayer] {
let fetchRequest: NSFetchRequest<CDPlayer> = CDPlayer.fetchRequest()
do {
return try context.fetch(fetchRequest)
} catch {
print("Failed to fetch players: \(error)")
return []
}
}
func deletePlayer(playerVM: PlayerVM) {
let fetchRequest: NSFetchRequest<CDPlayer> = CDPlayer.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "name == %@", playerVM.player.name)
do {
let players = try context.fetch(fetchRequest)
if let playerToDelete = players.first {
context.delete(playerToDelete)
saveContext()
} else {
print("Player not found")
}
} catch {
print("Failed to fetch player for deletion: \(error)")
}
}
func updatePlayer(playerVM: PlayerVM) {
let fetchRequest: NSFetchRequest<CDPlayer> = CDPlayer.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "name == %@", playerVM.player.name)
do {
let players = try context.fetch(fetchRequest)
if let playerToUpdate = players.first {
playerToUpdate.name = playerVM.player.name
playerToUpdate.photo = playerVM.player.photo
saveContext()
} else {
print("Player not found")
}
} catch {
print("Failed to fetch player for update: \(error)")
}
}
func saveHistorique(historique: HistoricVM) {
let historiqueEntity = CDHistorique(context: context)
historiqueEntity.player1_name = historique.historic.player1_name
historiqueEntity.player2_name = historique.historic.player2_name
historiqueEntity.time = historique.historic.time
historiqueEntity.result = historique.historic.result
saveContext()
}
func fetchHistoriques() -> [CDHistorique] {
let fetchRequest: NSFetchRequest<CDHistorique> = CDHistorique.fetchRequest()
do {
return try context.fetch(fetchRequest)
} catch {
print("Failed to fetch historiques: \(error)")
return []
}
}
func deleteHistorique(historique: Historique) {
let fetchRequest: NSFetchRequest<CDHistorique> = CDHistorique.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "player1_name == %@ AND player2_name == %@ AND time == %@", historique.player1_name, historique.player2_name, historique.time)
do {
let historiques = try context.fetch(fetchRequest)
if let historiqueToDelete = historiques.first {
context.delete(historiqueToDelete)
saveContext()
} else {
print("Historique not found")
}
} catch {
print("Failed to fetch historique for deletion: \(error)")
}
}
func countVictories(for player: String) -> Int {
let fetchRequest: NSFetchRequest<CDHistorique> = CDHistorique.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "(player1_name == %@ AND result == player1_name) OR (player2_name == %@ AND result == player2_name)", player, player)
do {
return try context.fetch(fetchRequest).count
} catch {
print("Failed to fetch victories for player: \(error)")
return 0
}
}
func countDefeats(for player: String) -> Int {
let fetchRequest: NSFetchRequest<CDHistorique> = CDHistorique.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "(player1_name == %@ AND result != player1_name) OR (player2_name == %@ AND result != player2_name)", player, player)
do {
return try context.fetch(fetchRequest).count
} catch {
print("Failed to fetch defeats for player: \(error)")
return 0
}
}
}

@ -0,0 +1,22 @@
//
// Historique.swift
// DouShouQi_App
//
// Created by étudiant on 22/06/2024.
//
import Foundation
public class Historique{
var player1_name: String
var player2_name: String
var time: String
var result: String
init(player1_name: String, player2_name: String, time: String, result: String){
self.player1_name = player1_name
self.player2_name = player2_name
self.result = result
self.time = time
}
}

@ -0,0 +1,19 @@
//
// Player.swift
// DouShouQi_App
//
// Created by étudiant on 12/06/2024.
//
import Foundation
public class Player{
var name: String
var photo: String = ""
init(name: String, photo: String) {
self.name = name
self.photo = photo
}
}

@ -0,0 +1,34 @@
//
// Animals.Symbols.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 21/06/2024.
//
import Foundation
import DouShouQiModel
extension Animal {
public var symbol: String {
switch self{
case .rat:
return "🐭"
case .cat:
return "🐱"
case .dog:
return "🐶"
case .wolf:
return "🐺"
case .leopard:
return "🐆"
case .tiger:
return "🐯"
case .lion:
return "🦁"
case .elephant:
return "🐘"
@unknown default:
return "🐥"
}
}
}

@ -0,0 +1,28 @@
//
// CDHistoriqueExtension.swift
// DouShouQi_App
//
// Created by étudiant on 22/06/2024.
//
import Foundation
import CoreData
extension CDHistorique {
func toModel() -> Historique {
return Historique(
player1_name: self.player1_name ?? "",
player2_name: self.player2_name ?? "",
time: self.time ?? "",
result: self.result ?? ""
)
}
convenience init(player1_name: String, player2_name: String, time: String, result: String, context: NSManagedObjectContext) {
self.init(context: context)
self.player1_name = player1_name
self.player2_name = player2_name
self.time = time
self.result = result
}
}

@ -0,0 +1,22 @@
//
// CDPlayerExtension.swift
// DouShouQi_App
//
// Created by étudiant on 14/06/2024.
//
import Foundation
import CoreData
extension CDPlayer {
func toModel() -> Player {
return Player(name: self.name ?? "", photo: self.photo ?? "")
}
convenience init(name: String, photo: String, context: NSManagedObjectContext){
self.init(context: context)
self.name = name
self.photo = photo
}
}

@ -0,0 +1,32 @@
//
// Language.swift
// DouShouQi_App
//
// Created by Rémi REGNAULT on 04/06/2024.
//
import Foundation
public enum Language: String, Identifiable {
case french, english, spanish
public var id: String {
return self.rawValue
}
public var litteral: String {
switch self {
case .french:
return "Français"
case .english:
return "English"
case .spanish:
return "Español"
}
}
static var list: [Language] {
return [.french, .english, .spanish]
}
}

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "board.svg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 112 KiB

@ -11,5 +11,9 @@ import SwiftUI
public struct Colors {
static let TitleText = Color("TitleTextColor")
static let Button = Color("ButtonColor")
static let MeepleP1 = UIColor(named: "MeepleP1")
static let TextButton = Color("ButtonTextColor")
static let PopupBackground = Color("PopUpBackground")
static let MeepleP2 = UIColor(named: "MeepleP2")
static let WinnerBackground = Color("WinnerBackground")
}

@ -23,9 +23,9 @@
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
"blue" : "0.000",
"green" : "0.000",
"red" : "0.000"
}
},
"idiom" : "universal"

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.765",
"green" : "0.855",
"red" : "0.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.765",
"green" : "0.855",
"red" : "0.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "0.150",
"red" : "0.150"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "0.150",
"red" : "0.150"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.600",
"green" : "0.600",
"red" : "0.600"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "0.800",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -11,4 +11,19 @@ import SwiftUI
public struct AppImages {
static let TitleImage = "Title"
static let SemiLion = "SemiLion"
static let boardGame = "boardGame"
static let SemiDog = "SemiDog"
static let SemiElephant = "SemiElephant"
static let SemiCat = "SemiCat"
static let SemiRat = "SemiRat"
static let SemiLeopard = "SemiLeopard"
static let SemiWolf = "SemiWolf"
static let Lion = "Lion"
static let Rat = "Rat"
static let Elephant = "Elephant"
static let Cat = "Cat"
static let Dog = "Dog"
static let Leopard = "Leopard"
static let Tigger = "Tigger"
static let Wolf = "Wolf"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "Cat.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "Dog.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "Elephant.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save