You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: fdf.go
    path of file: ./repos/unipdf/fdf
    
    the code of the file until where you have to start completion: //
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/

// Package fdf provides support for loading form field data from Form Field Data (FDF) files.
package fdf ;import (_ef "bufio";_f "bytes";_cdc "encoding/hex";_e "errors";_cd "fmt";_gf "github.com/unido
    
func (_acf *fdfParser )readTextLine ()(string ,error ){var _eac _f .Buffer ;for {_fbg ,_ggg :=_acf ._dgf .Peek (1);if _ggg !=nil {_gf .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_ggg .Error ());return _eac .String (),_ggg ;};if (_fbg [0]!='\r')&&(_fbg [0]!='\n'){_fcc ,_ :=_acf ._dgf .ReadByte ();
_eac .WriteByte (_fcc );}else {break ;};};return _eac .String (),nil ;};func (_agd *fdfParser )setFileOffset (_agfe int64 ){_agd ._beg .Seek (_agfe ,_d .SeekStart );_agd ._dgf =_ef .NewReader (_agd ._beg );};func _feg (_ecb string )(*fdfParser ,error ){_ggab :=fdfParser {};
_cba :=[]byte (_ecb );_ceb :=_f .NewReader (_cba );_ggab ._beg =_ceb ;_ggab ._gg =map[int64 ]_be .PdfObject {};_aeed :=_ef .NewReader (_ceb );_ggab ._dgf =_aeed ;_ggab ._egb =int64 (len (_ecb ));return &_ggab ,_ggab .parse ();};func (_agg *fdfParser )parseHexString ()(*_be .PdfObjectString ,error ){_agg ._dgf .ReadByte ();
var _ggge _f .Buffer ;for {_bdbb ,_ecae :=_agg ._dgf .Peek (1);if _ecae !=nil {return _be .MakeHexString (""),_ecae ;};if _bdbb [0]=='>'{_agg ._dgf .ReadByte ();break ;};_aggb ,_ :=_agg ._dgf .ReadByte ();if !_be .IsWhiteSpace (_aggb ){_ggge .WriteByte (_aggb );
};};if _ggge .Len ()%2==1{_ggge .WriteRune ('0');};_dfa ,_gbb :=_cdc .DecodeString (_ggge .String ());if _gbb !=nil {_gf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u0050\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0068\u0065\u0078\u0020\u0073\u0074r\u0069\u006e\u0067\u003a\u0020\u0027\u0025\u0073\u0027 \u002d\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u0061n\u0020\u0065\u006d\u0070\u0074\u0079 \u0073\u0074\u0072i\u006e\u0067",_ggge .String ());
return _be .MakeHexString (""),nil ;};return _be .MakeHexString (string (_dfa )),nil ;};func (_bg *fdfParser )skipComments ()error {if _ ,_cb :=_bg .skipSpaces ();_cb !=nil {return _cb ;};_dae :=true ;for {_dfc ,_ded :=_bg ._dgf .Peek (1);if _ded !=nil {_gf .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_ded .Error ());
return _ded ;};if _dae &&_dfc [0]!='%'{return nil ;};_dae =false ;if (_dfc [0]!='\r')&&(_dfc [0]!='\n'){_bg ._dgf .ReadByte ();}else {break ;};};return _bg .skipComments ();};func (_efg *fdfParser )trace (_bba _be .PdfObject )_be .PdfObject {switch _gac :=_bba .(type ){case *_be .PdfObjectReference :_dcg ,_feb :=_efg ._gg [_gac .ObjectNumber ].(*_be .PdfIndirectObject );
if _feb {return _dcg .PdfObject ;};_gf .Log .Debug ("\u0054\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");return nil ;case *_be .PdfIndirectObject :return _gac .PdfObject ;};return _bba ;};