-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

upgrade2.txt
                                                                     2000/09/07

                                                   (株)セガ・エンタープライゼス
                                                     テクニカルサポートセンター


■ライブラリ変更内容

-------------------------------------------------------------------------------
●ご注意
ヘッダファイルやその他のファイルを参照することで利用可能なすべての関数
等の存在を知る事ができますが、ライブラリリファレンスに記載のないものに
関しては、動作の保証はしていません。
これらの関数等は現在未公開であり、仕様の確定や動作の確認が行われてから、
公開とさせていただきます。ユーザー各位の責任の範囲内でのご利用は自由で
すが、くれぐれも出荷される製品には組み込まないようにしてください。
また、これらの情報についての問い合わせには公開するまでお答えできません。
ご了承ください。

-------------------------------------------------------------------------------
【SDK 2.00J(RC3) → SDK 2.00J(F)】
-------------------------------------------------------------------------------

1.基本ライブラリの変更
----------------------

 1.1 システムライブラリ      (shinobi2.lib: Ver 2.19 → 2.20)

    (1)GDファイルシステム(gdFs 2.02→2.03)
      ・[不具合対策]
　　　　　極めて少数のDreamcastで、ファイルリード中にディスクドアをオープン　
　　　　しても、エラーにならない場合がある不具合の対策をしました。

    (2) 音声サンプリングライブラリ(syWssip: Ver 2.52→2.53)
      ・[不具合対策]
　　　　　旧マイクデバイスとDreameye用マイクを同時にサンプリングに使用する場合
　　　　に発生する以下の不具合の対策をしました。
　　　　　ハンドルを２つ生成して同時に２台のマイクからサンプリングを行う際、
　　　　デバイス番号の小さい方のスロットにマイク、大きい方にDreameye用マイクを
　　　　接続すると、Dreameye用マイクのハンドルがREC状態になりませんでした。

 　 (3) シリアルライブラリ(syCom: Ver 0.43→0.44)
      ・[変更] 
　　　　　シリアルライブラリのソースファイル名、グローバル変数名を、NetworkSDK同梱の
　　　　sh4scifモジュール（デバッグ用）と衝突しないよう変更しました。
       　リンク時のできなかった問題を解消しただけであり、双方のライブラリを同時に
　　　　動作させることはリソース競合のためできません。

 1.2 サウンドライブラリ      (sg_sd2.lib  : Ver 2.50.12→2.50.13)

　　・[追加]
　　　　 ホストコマンドバッファの現在使用量を取得する関数を追加しました。
　　　　SDE_ERR sdSysGetUsedHostCmd( Sint32 *percent ) ;


2.ミドルウェアライブラリの変更
------------------------------
 2.1 MPEG Sofdec(sg_mwk2.lib,sofdec2.lib)

　　・[変更] 
　　　SofdecライブラリのVideo-RAMの使用量を削減しました。

 2.2 ADX,MPEG Sofdec統合ライブラリ(adx_sofdec_mwk2.lib)

　　・[追加]
　　　adx_sofdec_mwk2.libを追加しました。
　　　　このライブラリは、sg_mwk2.lib,sofdec2.lib,cri_adxs.libの3つのライブラリを
　　　１つにまとめたものです。
　　　　ADX または ADXとMPEG Sofdecを使用する際に、リンクするライブラリを
　　　adx_sofdec_mwk2.libに置換えることで、CodeWarriorのリンク時に大量に出力される
　　　「同一シンボル名が複数のライブラリに存在する」旨の警告メッセージがなくなります。


3.Makefile関連の変更
--------------------
　　・[変更]
　　　lib\makefile\makedef.hms

　　　日立アセンブラのアセンブラアセンブラオプションに-round=nearestを追加
　　　しました。

4.その他
--------
     ・includeフォルダ以下の標準ライブラリヘッダファイル一部を差し換えました。
       (ctype.h/errno.h/math.h/setjmp.h/stdio.h/stdlib.h)

 　　　SHC Ver5.1R13で
　　  「C++で_errno,_HUGE_VALがMultiple Linkage-specificationになるケースがある」
 　　　という不具合を対処するためのヘッダファイルの更新に伴うものです。

       なお、CodeWarrior環境でもincludeフォルダ下の上記標準ライブラリヘッダ
　　　 ファイルを参照しますが、この変更が及ぼす影響はありません。


-------------------------------------------------------------------------------
【SDK 2.00J(RC2) → SDK 2.00J(RC3)】
-------------------------------------------------------------------------------

1.基本ライブラリの変更
----------------------

 1.1 システムライブラリ      (shinobi2.lib: Ver 2.17 → 2.19)

    (1)GDファイルシステム(gdFs 2.01→2.02)
　　・[追加]
　　　メディアがGD-ROM以外の場合、gdFsMount()関数及びgdFsReMount()関数が、
　　　戻り値0xffffffcd（-51）を返すように変更しました。
　　　なお、このエラーコードは特にヘッダ等で定義されていません。予約扱いです。
　　　通常他の未定義エラーと同様、有限回数リトライ後、ブートロムメニューに戻る
　　　ような処置をして下さい。

    (2)メモリマネージメントライブラリ(sg_maloc.lib 2.01Apr→Aug)
    ・[不具合対策]
        realloc()関数，syRealloc()関数を呼び出した場合、領域確保が不可能な場合に、
　　　元のヒープを開放していましたが、元のヒープはそのままにしておく(正しい仕様)
　　　ように修正しました。

    (3)バックアップライブラリ(sg_bup.lib 2.10→2.11)
    ・[不具合対策]
　　　極めて稀ですが、ペリフェラル割り込みのタイミングによっては、ファイル
　　　アクセスが誤動作するという不具合を修正しました。
　　　ファイルアクセスの誤動作とは、存在するファイルをロードしようとしても
　　　ファイルが見つからなかったり、ファイルの削除が終了しない、などがありえます。

　　(4)マルチヒープ対応メモリ管理ライブラリ(sg_MalcM.lib 1.00)
　　・[新規]マルチヒープ対応メモリ管理ライブラリを追加しました。
　　　あらかじめヒープ領域を指定し、そのヒープに対応するハンドルを取得します。
　　　そのハンドルを介してメモリの割り当て・開放ができます。

    (5)ヘッダファイル shinobi.h
　　・[変更] 
    　マルチヒープ対応メモリ管理ライブラリのヘッダファイル(sg_MalcM.h)を
      インクルードするように変更しました。

 1.2 グラフィックスライブラリ(ninja2.lib  : Ver 2.01.005 → Ver 2.01.009)
　　・[変更] 
　　　(1) njCalcScreen()関数の戻り値をOK、NGからTRUE、FALSEに変更しました。
      (2) シェープモーション関数の定義を変更しました。NJS_CNK_OBJECTの前にconst
　　　　 修飾子をつけました。
　　　　　void	njCnkDrawShapeMotion( const NJS_CNK_OBJECT *object, 
　　　　　　　　　const NJS_MOTION *motion, 
　　　　　　　　　const NJS_MOTION *shape, 
　　　　　　　　　Float frame, 
　　　　　　　　　Float sframe,
　				  Sint32 ( *pDrawFunc )( NJS_CNK_MODEL *cnkmodel ) );

　　　　　void	njCnkDrawShapeLink( const NJS_CNK_OBJECT *object, 
　　　　　　　　　const NJS_MOTION_LINK *motion_link, 
　　　　　　　　　const NJS_MOTION_LINK *shape_link,
				  Float rate, 
                  Sint32 ( *pDrawFunc )( NJS_CNK_MODEL *cnkmodel ) );

　　・[不具合対策] 
　　　(1)njCnkWireDrawObject()関数のラインのZ値が不正になる不具合を修正しました。
　　　(2)njZBufferMode()関数の動作不正を修正しました。
　　　(3)njSetLight()関数の中でEasy,Simpleの時はカレントマトリックスを掛けるよう
　　　　 に修正しました。
　　　(4)njCnkIntensity()関数の不具合を修正しました。
　　　(5)njStartCheck()関数が3Vレイテンシィの際の不具合を修正しました。

 1.3 デバッグライブラリ　　　(nindows2.lib: Ver 2.09　→ Ver2.11)
　　・[追加] 
　　　フォントタイプにAUTOを追加しました。（VGA,NTSCに応じてフォントサイズを
　　　自動切換します）

　　・[変更/改善]
　　　(1)使用(要求)するメモリ量を削減しました。
      (2)NTSCの時にデスクトップの周囲を使用しないようにしました。
      (3)内部のoperator newをstaticにすることによりユーザー定義のnewとの衝突を
 　　　　回避。

　　・[不具合対策] 
　　　メニューの順番が入れ替わることがある不具合を修正しました。


2.ミドルウェアライブラリの変更
------------------------------

 2.1 ASR1600/C 音声認識ライブラリ
　　・[追加] 
      簡易音声認識ライブラリ NSR Ver.1.20 (サンプルフォルダにソース提供nsr.c,nsr.h)
     ・ユーザワードトレーニング/認識に対応しました。
     ・サブヒープに対応しました(syMallocMultiライブラリを使用)。


3.Makefile関連の変更
--------------------

 (1)set_dc2.bat
  ・[不具合対策]　SHC_INCのパスが、utl\dev\hitachi\includeを正しく指して
　　いなかった不具合を修正しました。
　・[追加]
　　SHC Ver6.0AD(Ver5.1の後継コンパイラ,近日公開予定)用の設定オプションを
　　追加しました。

 (2)lib\makefile
　・[追加]
　　SHC Ver6.0AD用の設定オプションを追加。

 (3)バイナリファイル変換用のツールelf2bin.exeのコマンドパス

    lib\makefile\makedef.hms に定義してあるelf2bin.exeのコマンドパスを、
　　CD-ROM提供時の形態に以下の通り変更しました。

　　(RC2まで) utl\dev\hitaci\elf2bin.exe 
　　(RC3以降) utl\dev\elf2bin\elf2bin.exe

　　★注意★

  　従って、ビルド時にelf2bin.exeが見つからないというエラーが発生する場合、
　　上記のようにelf2bin.exeを移動するか、makedef.hmsをRC2時の設定に戻すよう
　　お願いいたします。


-------------------------------------------------------------------------------
【SDK 2.00J(RC1) → SDK 2.00J(RC2)】
-------------------------------------------------------------------------------

1.ライブラリ全般に関する変更
----------------------------

　今回よりミドルウェアライブラリのASR1600/C 音声認識ライブラリを同梱しています。

2.基本ライブラリの変更
----------------------

 2.1 システムライブラリ      (shinobi2.lib: Ver 2.14 → 2.17)

 (1) 拡張機器判別ライブラリ(sg_exchk.lib　Ver 2.01 → Ver 2.02)
    ・[変更] ライブラリの初期化／終了時にデバイス、割り込みのディセーブル
             処理を追加

 (2) Boot ROMサービスライブラリ (sg_sybt.lib Ver 2.01 → Ver 2.02)
　　・[変更] 
　　　　syBtExit()関数にパンチスルーレジスタ初期化処理を追加。
　　　アプリケーションの組合せによっては、
　　　　(アプリケーションA)→(BOOT ROMメニュ)→(アプリケーションB)
　　　とすると、タイトルBで画面表示が不正に場合があることの対策。

 (3)その他内部処理の不具合修正・実装の変更。

 2.2 IPモジュール(sg_ini.obj)
　　・[変更] 
　　　　アプリケーション起動時にパンチスルーレジスタ初期化を追加。
　　　変更の理由は、sg_sybt.libと同じ。

　　★注意★

　　これにともないIPmakerで、ip.binを作成する際に参照されるファイル、
　　　　ipmaker\bin\sg_inino.bin(セガライブラリ用)
　　　　ipmaker\bin\sg_inidr.bin(WindowsCE用)
　　が変更されます。このモジュールは、Developer Technical Support Web 
    に公開されています。
    「 00/06/27  --- IP Maker(R000626)　ユーティリティ」
　　から、ダウンロードしてご使用下さい。


 2.3 グラフィックスライブラリ(ninja2.lib  : Ver 2.01.001 → Ver 2.01.005)

　・[追加]
　　(1)シェープモーションで、シェープデータのみの場合も動作するようにしました。

　　(2)njSetLight()関数を追加しました。

　　(3)16ビットアングルのSangle型を追加しました。

　　(4)Sangle型を使用したNJS_MKEY_SA、NJS_MKEY_SA1モーションキー構造体を
　　　 追加しました。

　　(5)NJS_LACTION構造体を追加しました。

　　(6)NJS_LIGHT構造体を新規に追加しました。Ninja1のNJS_LIGHT構造体とは
　　　 異なります。

　　(7)NJS_MLIGHT_MOTION構造体を新規に追加しました。

　　(8)以下のカメラモーション関数を追加しました。

　　　　　void	njCameraAction( const NJS_CACTION *caction, Float frame );
　　　　　void	njCameraMotion( const NJS_CAMERA *camera, 
　　　　　　　　　　　　　　　　const NJS_MOTION *motion, Float frame );
　　　　　void	njGetCameraAction( const NJS_CACTION *caction, 
　　　　　　　　　　　　　　　　　 NJS_CMOTION_DATA *data, Float frame );
　　　　　void	njGetCameraMotion( const NJS_CAMERA *camera, 
　　　　　　　　　　　　　　　　　 const NJS_MOTION *motion, 
　　　　　　　　　　　　　　　　　 NJS_CMOTION_DATA *data,  Float frame );

　　(9)以下のライトモーション関数を追加しました。

　　　　　void	njLightAction( Int light_num, const NJS_LACTION *laction, 
　　　　　　　　　　　　　　 　Float frame );
　　　　　void	njLightMotion( Int light_num, const NJS_LIGHT *light, 
　　　　　　　　　　　　　　 　const NJS_MOTION *motion, Float frame );
　　　　　void	njGetLightAction( const NJS_LACTION *laction, 
　　　　　　　　　　　　　　　　　NJS_LMOTION_DATA *data, 
　　　　　　　　　　　　　　　　　Float frame );
　　　　　void	njGetLightMotion( const NJS_LIGHT *light, 
　　　　　　　　　　　　　　　　　const NJS_MOTION *motion, 
　　　　　　　　　　　　　　　　　NJS_LMOTION_DATA *data, Float frame );
　　　　　void	njMultiLightMotion( const NJS_MLIGHT_MOTION *mlight,
　　　　　　　　　　　　　　　　　  Float frame);

　　(10)コンパクトシェープリンクをサポートし、以下の関数を新たに追加しました。

　　　　　void njInitShapeLink( void *buf, Sint32 size );
　　　　　void njSetShapeLinkList( const NJS_CSHAPELIST *shape_list );

　　　　シェープリンクする場合は、リンクする２つのシェープに対しセット
　　　　しなければなりません。

　　(11)クアッドテクスチャにオフセットカラー付の描画をサポートしました。

　　　　　void	njSetQuadTextureH( Sint32 texid, Uint32 col, Uint32 off );
　　　　　void	njSetQuadTextureHColor( Uint32 col, Uint32 off );

　　(12)以下のテクスチャ関数を追加しました。

　　　　　Sint32 njTexMallocFixedArea(Uint32 size,Sint32 **pSurface);
　　　　　Sint32 njTexFreeFixedArea(void);
　　　　　Sint32 njCheckTextureFormat(Sint32 texmng_no,NJS_PVRHEADERDATA *pvrh);

　　(13)ブレンドモードにソースセレクト、ディストネーションセレクトを追加しました。

　　　　　#define NJD_FBS_SEL      (BIT_15) /* Src Select */
　　　　　#define NJD_FBD_SEL      (BIT_14) /* Dst Select */


　・[変更]
　　(1)NJS_CAMERA構造体からクリップのメンバを削除しました。

　　(2)テクスチャロードの際に、
　　　　a.テクスチャアトリビュートにNJD_GLOBALINDEX等、0以外の値を指定し、
　　　　b.テクスチャリストのすべてのテクスチャをロードせず、
　　　　c.njReleaseTextureNum()関数,njReleaseTexture()関数でテクスチャリリース
         すると
　　　ハングアップしてしまいます。

　　　　これを回避するためにロードしたテクスチャには、テクスチャアトリビュートに
　　　NJD_TEXATTR_REGISTRATIONのフラグを設定するようにしました。テクスチャ
　　　アトリビュートにNJD_TEXATTR_REGISTRATIONフラグがある場合、テクスチャをリリース
　　　することができます。

　　　njLinkTexlist()関数でNJD_TEXATTR_REGISTRATIONフラグを設定しています。
　　　njLinkTexlist()関数はnjEntryTextureManageNum()関数の内部でも使用されています。
　　　njReleaseTextureNum()関数,njReleaseTexture()関数でNJD_TEXATTR_REGISTRATION
　　　フラグをクリアしています。
　　　njReleaseTextureNumG()関数,njReleaseTextureAll()関数でロードした場合は、
　　　NJD_TEXATTR_REGISTRATIONフラグはクリアできません。
　　（テクスチャリストがわからないため設定できません）

　　(3)ライトモーションデータ取得構造体NJS_LMOTION_DATAを変更しました。

　　(4)シェープモーションで、シェープとTRSモーションのフレームを
　　　別々に指定できるようにしました。

　・[不具合修正]

　　(1)njInitVertexBufferEx()関数でテクスチャとバーテックスバッファのサイズ
　　　計算が誤っていたのを修正しました。

　　(2)HIDEモーション使用のとき、親がハイドすると、子供や兄弟もハイドする
　　　不具合を修正しました。

　　(3)njDrawModifier2DEx()関数,njDrawModifier3DEx()関数が頂点数３の時に
　　　正しく動作しないという不具合を修正しました。

　　(4)njSetEnvelopeWeightValue()関数の名称変更。単語の間違いを修正しました。

　　(5)njPtclDrawSprite()関数が正しく表示できなかったバグを修正しました。

　　(6)njDef.hでCellZAngマクロがDegからAngleに変換していなかった不具合を修正
　　　しました。このためセルのZ回転がおかしくなっていました。

　　(7)njCollisionCheckBC()関数の不具合を修正しました。


 2.4 サウンドライブラリ      (sg_sd2.lib  : Ver 2.50.09  → Ver 2.50.12)

　・[変更]
　　(1)サウンドライブラリ内部にもつサウンドドライバを、Ver2.50.03から、
　　　Ver2.50.04へ更新しました。

　・[不具合修正]
　　(1)One Shot音源の再生時間設定APIのsdShotSetPlayTime()関数が正常に
　　　動かない場合があった不具合を修正しました。

　　(2)一部の未公開関数を削除したため、ミドルウェアとリンクができない場合が
　　　あった不具合を修正しました。



 2.5 デバッグライブラリ　　　(nindows2.lib　: Ver 2.08　→ Ver2.09)

　・[変更]
　　(1)NWINFORMATION構造体に、ワークサイズ(nWorkSize)メンバを追加しました。
　　　nWorkSizeには、nwGetWorkSize()関数で取得される必要なワークサイズを
　　  設定します。
　　　ただし、ワークエリアのポインタ(pWork)メンバに、NULLを指定する場合は、
　　　特にnWorkSizeメンバに指定する必要はありません。

    (2)ヒープ初期化時に0クリアするようにしました。
    (3)ペリフェラルのデバイスを追加しました。

 2.5 グラフィックスドライバ  (kamui2.lib  : Ver 16,5,1,2 → Ver 16,5,3,2)

 2.6 サウンドドライバ        (manatee.drv : Ver 2.50.03  → Ver 2.50.04)

3.ミドルウェアライブラリの変更
------------------------------

　・[追加]
    (1)シームレス連続再生機能をAFSファイルに対応しました。
    (2)シームレス連続再生機能をSFDファイル(音付き)に対応しました。

　・[不具合修正]
    (1)511以上のファイルを含むAFSファイルのパーティション情報読み込み時の
　　　不具合を修正しました。

    (2)ADXファイルシステム :
      ADXF_GetFsizeByte()関数の戻り値が2048byte単位であったのを修正しま
　　　した。

   ・[変更] Sofdecサンプルのフレームワークを変更しました。。
       UsrWaitVBlank()関数 → UsrInitSync(),UsrSyncFrame()関数

 　　　sample\mw\sofdec以下のサンプルプログラムのソースをご覧下さい。


4.Makefile関連の変更
--------------------
　
　・各サンプルプログラムに、GNU make(gmake.exe)用のメイクファイル(makefile.gmk)
  を添付しました。sample\sample2.txtを参照してください。


5.その他
--------
　
　・従来 includeディレクトリ以下に配置したSHC用のC++用ヘッダファイルを、
　　utl\dev\hitachi\include以下に移しました。
　・上記にともない、set_dc2.batで SHC_INC環境変数に設定するパスに、
　　utl\dev\hitachi\includeを追加しました。

-以上-


-------------------------------------------------------------------------------
【SDK 2.00J(評価版) → SDK 2.00J(RC1) 】
-------------------------------------------------------------------------------

1.基本ライブラリ個別の変更
--------------------------
　
 1.1 システムライブラリ      (shinobi2.lib: Ver 2.12     → Ver 2.14)

　・[追加]　
    (1)拡張機器判別ライブラリ(sg_exchk.lib)を追加しました。これに伴い、
　　　shinobi.hから、ヘッダファイル(sg_exchk.h)のインクルードを追加しました。

 1.2 グラフィックスライブラリ(ninja2.lib  : Ver 2.00.010 → Ver 2.01.001)

　・[追加]
　　(1)トゥーンシェーダーでエッジを描画する２つの関数を追加しました。
 　　a.njCnkSetToonEdge( 幅 , 色 )  -  エッジの幅と色を設定
 　  b.njCnkToonEdgeDrawObject( OBJECT ) - オブジェクトのエッジを描画

　・[変更]
　　(1)エンベロープの精度を16ビットに向上しました。

　　(2)シェープ形式を変更しました。これに伴い、njInitShape()関数の仕様変更、
　　　及び、新たにnjSetShapeList()関数を追加しました。
　　　シェープに関して、全面的に変更されました。

　 【注意】今回のバージョンではシェープリンクはサポートされていません。

　　(3)モーションコールバック関数を追加。Ninja1と同じ仕様です。

    (4)NjDirect.hから、不要な関数プロトタイプ宣言等を削除しました。

　　(5)不透明モディファイアをセットしない機能を追加しました。
　　　　NJD_CONTROL_3D_DISABLE_OPAQUE_MODIFIER　の設定で不透明モディファイア
　　　を設定しません。

　・[削除]
    (1) njGetTextureNumG()関数を削除しました。

　・[不具合修正]　以下の不具合を修正しました。

　　(1) njCnkEasyMultiDraw()関数,njCnkSimpleMultiDraw()関数で、ライトの数を
　　　 ５個にすると無限ループになる。

　　(2)njSearchTextureManageNum()関数で同じテクスチャをロードしたとき、
       リファレンスカウンタが更新されていない(*)。
　　　 この関数を使用しているnjEntryTextureManageNum()関数もあわせて修正。

　　　 (*)nuLoadTexture()関数などで同じテクスチャをロードしてもリファレンス
  　      カウンタが1のままでした。
　　
　　(3)パーティクル、ライン描画でユーザクリップを行うと描画が不正になる。

　　(4)32X32mipmap SmallVQ、64x64SmallVQテクスチャがnjInitVertexBufferEx()関数
      で設定した数ロードできない。(njInitVertexBufferEx関数を修正)

　 【注意】これに伴い、njInitVertexBufferEx()関数で設定するSmallVQの数の意味を
　　　　　　SmallVQの枚数から、SmallVQのグループの数に変更しました。

　　(5)njCnkShadowTexDrawObject()関数が、3Vレイテンシモードのとき描画しない。


 1.3 サウンドライブラリ      (sg_sd2.lib  : Ver 2.50.06  → Ver 2.50.09)

　・[変更]

　　(1)sdSysSetSlotNum()関数をサウンドドライバが初期化されていないとエラーに
　　　なるように変更しました。

　・[不具合修正]　以下の不具合を修正しました。

　　(1)  サウンドメモリを不当なアドレスで初期化していた。

 1.4 サウンドドライバ        (manatee.drv : Ver 2.50.01  → Ver 2.50.03)


2.Makefile関連の変更
--------------------

　　lib\makefile\makepre.nmk (Ver 2.10.04)
　　lib\makefile\makepost.nmk(Ver 2.10.04)
　　lib\makefile\makedef.hms (Ver 2.10.03)
　　lib\makefile\makerule.hms(Ver 2.10.03)

　・[不具合対策] 以下の不具合を対策しました。

　(1) pre-user-targetおよびpost-user-targetが実行されない。

　(2) make実行時に、もとの環境変数PATHの設定内容が反映されない。


-以上-

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
